タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

arrowとhaskellに関するruiccのブックマーク (9)

  • CiteSeerX

    ruicc
    ruicc 2014/07/11
    Arrowのoriginal paper.
  • Haskell Advent Calendar 13日目: シンセサイザーで理解するArrowプログラミング - モナドとわたしとコモナド

    Haskell Advent Calendar 13日目の記事です。 ごきげんよう。 今年も音楽の冬がやってまいりました。Haskellより音楽のほうに力を注いでいる気がするこの頃ですが、ふとこう思いました――「Haskellでシンセサイザーを作たらとても楽しいのではないか?」 シンセサイザーの仕組みは、たとえばFM・減算式ならこうなります: しかし、これが実装出来てもあまり嬉しくない、というのはわかっていただけるのではないでしょうか――そう、ただのシンセサイザーではなくどんなシンセサイザーでも作れるフレームワークが欲しいのです。 部品を作る部品 -Artery- まず、私は、部品同士を「配線」できるようにするため、arteryというパッケージを作りました。 ArteryはArrowとしてのインターフェイスを持っています。Arrowはごく簡単に表現すると、以下のようなクラスで表現されます(

    Haskell Advent Calendar 13日目: シンセサイザーで理解するArrowプログラミング - モナドとわたしとコモナド
  • Arrowの話

    12+ new features for fewer meetings and less context switching. Get more time back to ship better code, faster. Learn more. Built for professional teams Bitbucket is more than just Git code management. Bitbucket gives teams one place to plan projects, collaborate on code, test, and deploy.

    Arrowの話
    ruicc
    ruicc 2013/12/05
    ポイントフリースタイルは定義域の値に触れずに関数を定義すること / バッカスさん素晴らしいこと言ってた / ArrowとMoandの比較
  • Control.Arrowでエラトステネスの篩, 階乗 - プログラムモグモグ

    エラトステネスの篩の前に, 階乗をArrowでやります. 理由はおいおい分かります. 階乗を普通に fact n = if n == 0 then 1 else n * fact (n - 1) main = print $ fact 10 3628800 流石にこれはいいですね. はい. Arrowに急ぐ前に, まずfixを使って書きましょう. 色々考えましたが, fixを介してArrowに行くのが一番近道です. fix f = f (fix f) fact = fix fact' fact' f n = if n == 0 then 1 else n * f (n - 1) main = print $ fact 10 3628800 さっきのfactを, 第一引数で関数を回すようにしてやるだけですね. 階乗をArrowLoopで さて, fixで書けたらもうお手の物です. というのも

    Control.Arrowでエラトステネスの篩, 階乗 - プログラムモグモグ
  • Arrow.hsを読もう〜その1〜 - みずぴー日記

    Arrow.hsを読もう、30分で読める範囲だけ。 ホントは30分でArrowを使って30分で何か作ろう、ってのがやりたいんだけど、まだプログラムが書けるほど理解していない。 しょうがないからコードリーディングをしよう。 どこにあるの? http://darcs.haskell.org/packages/base/Control/ 方針 とりあえずArrowのインスタンスである->に関するコードだけを読む。Kleisli(..)とdo記法は無視。 関連してそうなやつ モジュールからエクスポートされているやつ。 Arrow(..) ArrowChoice(..) ArrowApply(..) ArrowMonad(..) leftApp ArrowLoop(..) (>>>), (<<<) (>>>), (<<<) Arrowといえば(>>>)だけど、実はCategory.hsで定義されてい

    Arrow.hsを読もう〜その1〜 - みずぴー日記
  • mad日記 - Arrowパズル解答 (とArrowLoop解説)

    まず最初にArrowLoopについて説明します。数学的な話は一切しません(できません)。 ArrowLoopの仕組み ArrowLoopというクラスにはloopという関数が一つだけ属しています。このloopはArrowから新しいArrowを作り出してくれる関数です。 まずloopに入れるArrowはこんな形をしています。 入力が2つあり、出力も2つあります。ただし、Arrowは入力と出力がどちらも1つずつでなければならないので実際はタプルとして入出力します。標準ライブラリで定義されているArrowLoopクラスのインスタンスには普通の関数と、モナドをArrow化したKleisliというArrowがあります。 ここでは例として次のArrowを考えます。 swap_mul = \(x, y) -> (2 * y, 3* x) 実行例 > swap_mul (3, 4) (8,9)簡単な関数です

    mad日記 - Arrowパズル解答 (とArrowLoop解説)
  • Control.Arrow - mzsmsの雑記

    http://www.nicovideo.jp/watch/sm5103132 で、Haskell(というかGHC?)のControl.Arrowに関心を持ったので、すこしいじってみた。 loop その1 まず、理解が難しいloopから。なぜなら、どうもArrowを使うときにはトップダウンで考えないとわけが分からなくなるようなので。そしてあとで出す例もそうだけど、繰り返しをする仕事は一番上がloopになるので、loopに何を入れるべきなのかから考えはじめることになる。 とりあえず、(->)型(関数そのものの型)のloopの定義は次のとおり: class Arrow a => ArrowLoop a where loop :: a (b,d) (c,d) -> a b c instance ArrowLoop (->) where loop f b = let (c,d) = f (b,d)

    Control.Arrow - mzsmsの雑記
  • http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20110825

    ruicc
    ruicc 2011/08/28
    The Arrow Calculus
  • Haskell/Understanding arrows - Wikibooks, open books for an open world

    We have permission to import material from the Haskell arrows page. See the talk page for details. Arrows, like monads, express computations that happen within a context. However, they are a more general abstraction than monads, and thus allow for contexts beyond what the Monad class makes possible. The essential difference between the abstractions can be summed up thus: Just as we think of a mona

  • 1