タグ

Arrowに関するnsyeeのブックマーク (42)

  • Arrow 入門 - Life Goes On

    id:mzp さんに触発されて、Arrow 勉強中。 Haskell/Understanding arrows - Wikibooks, open books for an open worldの図が分かりやすいです。 まずは簡単なサンプルで動作を確認。 -- オリジナル f1 as = tail as ++ init as -- 引数を2つの経路に分けて、それぞれ tail と init を適用してから (++) でまとめる。 -- (&&&) の戻り値はタプルなので uncurry が必要。 f2 = arr (uncurry (++)) <<< tail &&& init -- 関数はそれ自体で Arrow のインスタンスなので、arr は不要。(!!) f3 = uncurry (++) <<< tail &&& init -- \ (f, a) -> f a は app で実現で

    Arrow 入門 - Life Goes On
  • HXT Arrow Lessons

  • http://ja.doukaku.org/192/lang/haskell/

  • wcコマンドの実装を通してArrowの気持ちを推し量ってみた - sshi.Continual

    "モナドの一般化"なんていう敷居がやたら高いふれこみのArrowをちょろっと調べてみた。 主に、ha-tanさんのサイト(http://d.hatena.ne.jp/ha-tan/20070810/1186744818)と、そこから参照されているページをひととおり読んだ。 モナドがわかる人には多分、 Monadは、値をからくり箱に入れたもの。からくり箱は基的に(ヘンな)値。 Arrowは、関数をからくり箱に入れたもの。からくり箱は基的に(ヘンな)関数。 3分で解るHaskellのArrowの基メモ - よくわかりません という説明でなんとなく通じるかなあ。 Monadが型クラスなようにArrowも型クラス。でもって、Arrowの場合はからくり箱の中身が関数なので、型情報によって処理をふりわけるっていう性質がモナドより強い(気がする)。ストリームファンクションはそのよい例で、関数の型を

    wcコマンドの実装を通してArrowの気持ちを推し量ってみた - sshi.Continual
  • Arrowを写経 - 趣味的にっき

    新しい概念を覚えるには、とりあえず写経して使ってみよう。ということでやってみました。 大体何ができるのかわかったような気がしますが、これがピタっとハマる適用例って何でしょう? 便利で使えそうだとは、何となくもやもや思うのですが、どこで使うべきなのかいまひとつピンときません。うーむ。。。 module Main (main) where import Control.Arrow f :: Arrow a => a Int Int f = arr (+ 1) g :: Arrow a => a Int Int g = arr (+ 2) main :: IO () main = do print $ f 100 -- => 101 print $ g 100 -- => 102 -- 関数fとgを直列に繋ぐ。100 + 1 + 2。 print $ (f >>> g) 100 -- => 10

    Arrowを写経 - 趣味的にっき
  • Arrowちょっとわかった - takkan_mのNo planな日常

    疲れたと言いつつ、夜更かしするのが、ここ1ヶ月ぐらいの俺。 モナドもようわかっとらんのに、最近Arrowを勉強してみようと思ってみました。 以下のサイトのまとめが一番わかりやすかったです。 言語ゲーム - How To Arrow 基 言語ゲーム - How To Arrow2 並置 言語ゲーム - How To Arrow3 選択 以下は、自分が思ったモナドとArrowの違いをまとめる。こう書けるようになるという表現についていっているので、理論だとかわかりません。間違ってる可能性大なので、気をつけて。 通常、ある関数を適用して、他の関数にそれを適用するというのは、 (head . words) "hoge moge uga" のように、関数合成や括弧を使って書かなければいけなく、先に適用されていて欲しい関数が後ろにいってしまいます。 モナドは独特の型を用意することでデータを抽象化し、モ

    Arrowちょっとわかった - takkan_mのNo planな日常
  • ファンクション倶楽部で話してきました - トウフ日記

    http://www.slideshare.net/nskj77/arrow-presentation-706164 ファンクション倶楽部で話してきました。スライドをSlideShareにupしました。イベントでいただいた指摘とそのほか若干の修正をしてあります。 ustで視聴していただいた方ありがとうございました。イベントに来ていただいた方、遠いところ当にありがとうございました。特に発表後に質問と指摘をいただいた、[1..100]>>=penさん、id:nobusunさん、id:hyoshiokさん、lchinさん質問の時間に手をあげていただいてとてもうれしかったです。あんまりうまく答えられなくてすいませんでした。Control.Applicativeやデバッグについてなど勉強しておきます。 イベントスタッフのオブジェクト倶楽部のみんな、発表者のファンクション倶楽部のみんな、ありがとうご

    ファンクション倶楽部で話してきました - トウフ日記
  • Yampa - imHo

    YampaとGLUTでmonadiusのタイトル画面みたいに文字列を少しずつ表示してみた(まだ文字列一つだけ)がすごそう。試してみたい!それにはYampa とかいうライブラリ?を入れる必要がある。公式ページに行ってみると、x86/Linux 版と Windows 版のソースが分かれてる。どうしたらいいかわからん…。 cabal-installでhackageからlibraryを楽々インストールを見たらコマンドラインのインストールツールがあるそうなので、それを入れてみる。 CabalInstallからダウンロード ghc --make Setup; ./Setup configure してみると、Cabal, HTTP, zlib のバージョンがあってないといわれるので、そいつらを先にインストール ./bootstrap.sh で一気にインストールで切るらしいが、どこに入ったのかわからなかっ

    Yampa - imHo
  • Arrows in Javascript

  • Create new page · motemen/arrow-js Wiki

    Attach files by dragging & dropping, selecting or pasting them. Uploading your files… We don’t support that file type. Try again with a GIF, JPEG, JPG, MOV, MP4, PNG, SVG or WEBM. Attaching documents requires write permission to this repository. Try again with a GIF, JPEG, JPG, MOV, MP4, PNG, SVG or WEBM. We don’t support that file type. Try again with a GIF, JPEG, JPG, MOV, MP4, PNG, SVG or WEBM.

    Create new page · motemen/arrow-js Wiki
    nsyee
    nsyee 2008/08/21
    これはすばらしすぎる
  • [haskell][javascript] Arrow.jsが凄すぎる件 - Greenbear Diary (2008-07-25)

    ■ [mac] 英語を勉強したいならMac買うといいよ いままで英単語の意味を調べるときは ブラウザで新しいタブを開く alc.co.jpを開く (表示されるまでしばし待つ) 単語を打ち込む (表示されるまでしばし待つ) という手順を踏んでいたのですが、MacBookにしてからは マウスカーソルを画面左上に持っていく。Dashboardが表示される 開きっぱなしの英和/和英辞書に単語を打ち込む だけで単語の意味を調べられるように。前と比べて、明らかに知らない単語を調べる回数が増えました。 MacBookを買った直後から使えるとか、GreasemonkeyやBookmarkletと違ってブラウザ外(PDF読んでる時とか)でも引きやすいのが良いですね。 が、欲をいえば、 単語を選択する Dashboardを開く だけで単語が引けると手間が最小でいいなぁと思うのです。そうでなくても、 単語をクリ

    [haskell][javascript] Arrow.jsが凄すぎる件 - Greenbear Diary (2008-07-25)
  • http://ja.doukaku.org/comment/7144/

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • [haskell] How To Arrow 基本 - 言語ゲーム

    http://d.hatena.ne.jp/propella/20070807/p1 1:基 http://d.hatena.ne.jp/propella/20070807/p2 2:並置 http://d.hatena.ne.jp/propella/20070808/p1 3:選択 -- なんか知らんうちに Arrow 流行ってるようなので試してみる。 -- http://www.cs.chalmers.se/~rjmh/afp-arrows.pdf によると、ポイントフ -- リースタイルに IO を混ぜるのが Arrow だと考えればよいらしい。 import Control.Arrow -- Arrow では高階型を使いまくるので慣れないとちょっと恐ろしく見える。 -- Arrow は Monad と同じくクラスだが、Haskell で言うクラスとは他でいう -- インタフェース

    [haskell] How To Arrow 基本 - 言語ゲーム
  • 論文読み: Arrows, Robots, and Functional Reactive Programming http://www.haskell.org/yampa/AFPLectureNotes.pdf - 言語ゲーム

    Haskell のアニメーションライブラリ Yampa についてのチュートリアル。またもや FRP (Functional Reactive Programming) の話題です。SOE の FAL は休憩して、その未来の姿である Yampa に寄り道します。Monad を一般化した Arrow なるものを使って、time / space leak なる物を排除し、モバイルロボットのプログラムをきっちり記述します。 プログラムの例として、シムボット(ロボットシミュレータ)を扱います。シムボットは二つの独立して動く車輪を持ち、ぶつかりセンサーや、前後左右に光学センサーを持ちます。また、他のシムボットの位置を知る事も出来ます。 シグナル (p 3) 一番重要な概念はシグナルです。 Signal a = Time -> a つまり、シグナルとは時間の関数です。例えばシムボットは車輪が二つあるので

    論文読み: Arrows, Robots, and Functional Reactive Programming http://www.haskell.org/yampa/AFPLectureNotes.pdf - 言語ゲーム
  • Arrowの心 - 2007-08-16 - mad日記

    昨日の続きです。記法がよいとかMonadみたいに副作用が扱えるとか言ったメリットをはるかに越えたArrowの素晴らしさについて紹介します。 reverse.reverse == id か? 自分が最初にArrowってすごいと気づいた問題がこれです。大学で同級生と話している時に気づきました。大して役に立つ例では無いですが、Arrowの新しい側面が見えてくる例です。 標準入力に対してreverse,reverse,headを順に実行して結果を出力するコードは以下のようになります。後の比較の為に敢えてArrowで書いています。 import Control.Arrow main :: IO () main = getContents >>= print. (reverse >>> reverse >>> head) リストを2回ひっくり返したら元に戻るだけなので、そのheadをとるという計算は一

    Arrowの心 - 2007-08-16 - mad日記
  • ArrowLoop - 言語ゲーム

    さて、気分を変えて ArrowLoop をやります。論文に書いてある loop f b = let (c,d) = f (b,d) in c の意味が全く分からなくて Arrow の勉強が一ヶ月近く停滞していたのですが、id:MaD さんが素晴らしい解説 http://d.hatena.ne.jp/MaD/20070818 を書かれているので自分なりに写経します。loop を使って普通のループを作るには、引数として関数を一つ与えます。関数の型は (b,d) -> (c,d) のような入出力ともタプルとします。よくある図で示すと、タプルの後ろの引数がくるりと入力に繋がれる形をしています。 import Control.Arrow nonsense (b, d) = (b + 1, d * 2) -- *Main> loop nonsense 1 -- 2 -- このしようも無い例では、b +

    ArrowLoop - 言語ゲーム
    nsyee
    nsyee 2008/05/03
    『手続き的にループを書くのは天動説のような物です』
  • Haskell でスタック言語を作る - 言語ゲーム

    Arrow はスタック言語だと口で言うだけじゃ信用してもらえないと思うので軽く作ってみる。 もしかして、Haskell で Joy (風言語)というのはとても難しいのではと思っていた。何故難しいかというと、スタックというのはリストなのだけど、リストというのは普通一つの型しか入れる事が出来ないのだ。でもリストじゃなくてタプルだったら問題ないと気が付いたのでやってみた。どちらかと言うと Cat 言語にあわせて作りました。サボってパーサーを作ってないので、文法は Arrow のままです。こんな風に実行します。リストの最後に factorial の Cat 風定義も置いておきました。 Cat> runCat $ push 3 >>> push 4 >>> add (7,())module Cat where import Control.Arrow data Quoation a = Q a in

    Haskell でスタック言語を作る - 言語ゲーム
  • ArrowによるHaskellプログラミングの基礎。…パイプ感覚で順次/分岐/繰返し - よくわかりません

    Programming with Arrowsを読んで理解したつもりのメモ。誤りなど乞うご指摘。 (復習)Arrowってなに? と思って以前調べたメモが"3分で解るHaskellのArrowの基メモ - よくわかりません"。それにちょっと補足というか観点を変えてまず感覚の整理。 Monadに色んな種類があるように、Arrowも色んな種類がある。 Monad: IO、Maybe、… Arrow: 関数そのまんま(->)、Kleisli m、… ある種類のMonadに色んな型の色んな値を入れられるように、ある種類のArrowに色んな型の色んな関数を入れられる。 Monad: Maybeの例→ 「Maybe Int」 にreturn 0もreturn 777もOK。「Maybe Char」 にreturn 'a'もreturn ' 'もOK。 Arrow: (->)の例→ 「Int -> In

    ArrowによるHaskellプログラミングの基礎。…パイプ感覚で順次/分岐/繰返し - よくわかりません
  • Arrowのこと - Inemuri nezumi diary(2007-06-22)

    _ Arrowのこと Open Source Conference 2007 Hokkaido の資料作り終えた。セミナーのほうはかなり初心者向きな講演になると思う。けど… あろはさんみたいな人ばかり来たらどうしようと思ったので Arrow の復習もしておいた。 小さな部屋らしいから、「Arrowというものが世の中にはございまして、Kleisli 圏やら Premonoidal 圏がどうのこうの…」とか言っておけばよかろうと考えた。これでも甘いと言われたら Functional Reactive Programming とかですか(だんだん偉大なる Shelarcy さんに近づく例)。 Hello, world を Arrow で 2 種類書いておく。一つは Control.Arrow モジュールに基づくもの、もう一つは -f arrows しないと通りません*1。 import Cont