タグ

ブックマーク / solorab.net (4)

  • FoldableとTraversable - うさぎ小屋

    Data.Foldable Data.Traversable lensのFold,Traversalの、前提を(私が)理解するために書かれた記事 Foldable 1 2 3 4 class Foldable t where foldMap :: Monoid m => (a -> m) -> t a -> m foldr :: (a -> b -> b) -> b -> t a -> b -- Minimal complete definition: foldMap or foldr. Class of data structures that can be folded to a summary value. 畳み込んで一点に潰す演算の可能な型クラス。Prelude.foldrの一般化。満たすべき制約はない。 具体例をコードで示す。 1 2 3 instance Foldable []

  • 圏論プログラミング言語CPL入門 - うさぎ小屋

    面白かったので入門記事を書きました。haskellの知識を仮定しますが圏論の知識は一切要求しません。 言語概要 圏論に基づく データは射として表す 関数は射あるいは羃対象として表す Turing完全でない 計算は必ず停止する 作者は日人 環境導入 haskellによる実装が存在するのでこれを用います。cabalを用いて以下ですべて済みます。 1 $ cabal install CPL 起動するにはcplと叩きます。 1 2 3 4 5 6 7 $ cpl Categorical Programming Language (Haskell version) version 0.0.7 Type help for help cpl> 引数にファイルを与えるとそれを実行します。中身を標準入力から流しこんだかのようなかの挙動をします。読み込んだ後replに入るオプション-iもあります。 1 $

  • Haskellのlensの使い方 (詳しめ) - みゆっきのにっき

    ekmett先生のlensに関して Haskellのlensの使い方 (基)の続き Lens,Getter,SetterからEquality,Iso,Prism,Reviewに関して Equality 1 type Equality s t a b = forall p f. p a (f b) -> p s (f t) A witness that (a ~ s, b ~ t). 図の一番下にある。 aとs,bとtが等しいことを示す。同時に2つの等号を表すのはlensとして使うためであろう。 1 2 type Equality s t a b = forall p f. p a (f b) -> p s (f t) type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t のようにLensと比較すると、その(->

  • Haskellのlensの使い方 (基本) - みゆっきのにっき

    ekmett先生のlensに関して Lens'は便利に使えはするけど、Prism,Iso,Traversal,Foldみたいなのは触ったことがなかったので調べた。 Lensの利用 1 import Control.Lens して 1 2 3 4 5 6 >>> ("hello",("world","!!!")) ^. _2 . _1 "world" >>> ("hello",("world","!!!")) & _2 . _1 .~ 42 ("hello",(42,"!!!")) >>> ("hello",("world","!!!")) & _2 . _1 %~ map toUpper ("hello",("WORLD","!!!")) みたいに使う。優先順位は以下のようになっている: 1 2 3 >>> ("hello",("world","!!!")) ^. (_2 . _1) >>

    Haskellのlensの使い方 (基本) - みゆっきのにっき
  • 1