1

lensパッケージがどのように機能するかについて、ゆっくりと頭を包み込もうとしています。Edward のスライド ( http://comonad.com/haskell/Lenses-Folds-and-Traversals-NYC.pdfStore s a ) を読んでいて、スライド 8 と 9の定義について質問があります。

newtype Lens s a = Lens (s -> Store s a)
data Store s a = Store (s -> a) s

定義が逆?Store s aレンズがゲッターとセッターのペアである場合、次のように定義する必要があるように思えます。

data Store s a = Store (a -> s) a

ここで、最初のコンストラクタ パラメータはセッター (データ構造を入れてa返すs) で、2 番目はゲッター (データ構造aから をフェッチするs) です。

それがスライドのエラーなのか、それとも私の理解が間違っているのか、誰でも確認できますか?説明してください。

ありがとうございました。

4

1 に答える 1

5

はい、エラーのようです。しかしStore正しいです-それは標準的なコモナドです。の定義は であるLens必要がありますnewtype Lens s a = Lens (s -> Store a s)

于 2013-08-28T04:46:56.127 に答える