関数型プログラミング言語Haskell Part10
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
361:デフォルトの名無しさん 09/03/25 22:00:07 >>360 > test ((->) a b) = a ++ b これが可能な型コンストラクタの例をあげてみて 362:デフォルトの名無しさん 09/03/25 22:52:33 runWriter >>> (printf "\nresult : %d\n" *** debugPrint) >>> uncurry (>>) $ foo 10 0 (IO a, IO a)をIO aにしようと思えばこういう風に結合するしかないんでしょうか? m(m a)や[m a]をならすjoinやsequenceみたいなものがあると思うんですが 363:デフォルトの名無しさん 09/03/25 23:00:55 結合ってのは uncurry (>>)の部分でArrowの濫用をしているというところではないです。 しかし自重してかつリスプみたいにならないで済む方法があれば教えてほしいです。 haskell初心者にありがちなポイントフリー厨になっているというところは多少自覚しておりますorg。 364:デフォルトの名無しさん 09/03/25 23:44:22 >>359 読んでみたけど、入門以前な私にはちょっと難しかったです。 fstは組み込みの演算子でタプルの先頭を取り出すと理解しましたが、 一つ目の例だと先行評価の例でもコンパイル時に(\x -> fst (sum x, product x))を(sum x) と最適化してから実行したらどうなのかな?と思いました。要するにCでいうこんなのかなと。 int t1, t2; t1 = sum(x); t2 = product(x); //副作用がないなら、これコンパイル時に消えるんじゃない?簡約というのは実行とはちがうのかな。 return t1; 二つ目の例だと、(やはりCとかを仮定すると)sumとproductの引数xは同一の変数というイメージがあります。 整数のリストへのポインタみたいな感じをもっていると、遅延評価の例で 「sumが0+1+2+3+4になったときのxをproductで使える」とどう嬉しいのかイマイチです… よくわからないので、本読んでみることにしました。最初はテンプレにあるIntroduction to Functional Programming Using Haskellというのでいい?
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5402日前に更新/104 KB
担当:undef