友人曰く、functional lensなるものがあるらしい、調べよ! との事で、調べてみた。 Lenses←ここの記事が参考になりました。 読んだところ、C#でいうところの、get,setと同様の機能をより関数型に実装したものがLensのようです。 例えば、あるデータを一まとめにしたタプルがあるとします。 その場合、getやsetは次のように書けます。 --get --tuple getC (_,_,c,_,_,_) = c --data getX d = x d --set --tuple setB b' (a,b,c,d,e,f) = (a,b',c,d,e,d) --data setX x' d = d {x = x'} これは私も何度か使用した書き方です。 タプルの場合では、タプルのもつ要素数が増えるに従いあほらしくなります。それを回避するために導入されたのが代数的データ型であり