関数型プログラミング言語Haskell Part28at TECH関数型プログラミング言語Haskell Part28 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト171:154 15/04/28 18:04:05.29 W3D8VZu+.net >>163 ありがとうございます。 想像していたのとはちょっと違って抽象度が高そうですが、 がんばって学んでみます。 >>167 考え始めたきっかけは最適化です。 ポイントフリーで記述していた式の中で、たまたま2つの関数が 関数合成に関して可換なのに気づいたので交換してみたら、 交換後に隣同士になった関数同士が融合できて最適化できました。 その時は本当に偶然見つけたのですが、もっと効率よく発見できないかと思い質問しました。 条件が分かれば悩まなくて済み、また勘違いで交換してしまうこともなくなります。 Haskell のデータ値はすべて抽象構文木で表せるので、 その形や変換する部分木の位置などに依るのかなと思っていましたが、 圏論の話が出てくるのは予想外でした。 自然関数は名前だけは知ってます(内容は未学習)。 多相関数は要するに型シグネチャに型変数を含む関数ですよね。 172:デフォルトの名無しさん 15/04/28 18:49:24.22 s9k+iiT5.net >>168 何らかの多相型をMとおいたとき、f : a -> bなる関数をmapで持ち上げたmap f : M a -> M bというと、 多相性を持ったまま何らかの操作を行う関数tx : forall a. M a -> M aは可換である、ということはなんとなく分かる。 多分、証明もできる。 もっと緩い条件もあるかもしれないけど、型レベルだとこの程度しか言えないんじゃないか? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch