[[MenuBar]] *概要 [#c986b38e] -純粋関数型言語 *まとめ [#z60568db] -[[Haskellレベルでクライスリまで持って行っている>http://qiita.com/CyLomw/items/ff1e5d1600291c952c5e]] -[[いい感じのHaskellブログの講評>http://qiita.com/sct/items/c7fb5e66ba8fa4d27403]] *単語 [#g49db933] |英語|日本語|解説|h |Object|対象|Haskellの型。''関数は対象でもあり射でもある!''| |Arror|射|関数| |Category|圏|Haskellの型と関数を対象、関数を射と見なした集まり。唯一の恒等射と、結合律が必要| |Functor|関手|「圏の圏」における射。関手則を満たす必要あり| |Category|圏|対象と射の集まり。唯一の恒等射と、結合律が必要。Haskellの型と関数を対象、関数を射と見なすとHask圏ができる| ||デカルト閉圏|型が対象、関数が射、関数合成が射の合成、id関数が恒等射、と対応づけた関数型言語の圏| |Functor|関手|圏から圏への写像。関手則が必要。HaskellのFunctorに相当| ||自己関手|自分の圏から自分の圏への写像。| ||自己関手圏|&mimetex($[C,C]=C^C$);を自己関手圏という| |Lifting|持ち上げ|普通の関数f(a -> m b)を,文脈に作用する関数に変換する演算f*(m a -> m b)にすること。この演算*をKleisli Starと呼び、Haskellでは>>=, bind演算子という| |Monadic Expression|モナド式|Monad m => m aのこと。| |||| |Monad|モナド|自己関手の圏におけるモノイド対象。| |fold|畳み込み|圏論では、catamorphism| 自然変換 代数的データ型自体もF始代数 *モナド [#p0878738] -ファンクタの文脈 |名前|文脈|h |Maybe|失敗可能性| |IO|副作用演算| |[]|非決定性計算| |State|状態保持| -do文 --中に書けるのは、 +++モナド式 +++パターン <- モナド式 +++let { 宣言1 ; 宣言2 ; ... ; 宣言n } *Tips [#e71953dd] -http://d.hatena.ne.jp/gintenlabo/20100601/1275396082 -- C++ における Maybe 相当の機能は、果たして Boost.Optional だけなのでしょうか。少し考えると、実はポインタもまた Maybe であることが分かります。 -- Boost には、既に Maybe に相当する Boost.Optional が存在する --Boost.Optional は C++ でも屈指の便利ライブラリ -http://d.hatena.ne.jp/StudyGuide+Memo/20140403/p1 -普通に書いてきたプログラムは、関数(集合写像)よりもクライスリ圏の射だって考えた方がいいよ -[[モナド数学>http://qiita.com/myuon_myon/items/7e20c4b3af83597547d8]] --そもそもモナドって何なんですか?はい、何なんでしょう?ここで、フィリップ・ワドラーの言葉を引用してみます。「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」 -http://south37.hatenablog.com/entry/2014/04/20/%E3%83%A2%E3%83%8A%E3%83%89%E3%80%81%E3%81%82%E3%82%8B%E3%81%84%E3%81%AF%E8%87%AA%E5%B7%B1%E9%96%A2 %E6%89%8B%E3%81%AE%E5%9C%8F%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%A2%E3%83%8E%E3%82%A4%E3%83%89 -[[代数構造デザインパターン>http://modegramming.blogspot.jp/2012/03/blog-post_02.html]] -http://anopara.matrix.jp/2015/12/08/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%805-%E5%8D%8A%E7%BE%A4%E3%81%A8%E3%83%A2%E3%83%8E%E3%82%A4%E3%83%89/ |