haskellのラムダ関数の挙動についての質問です。
haskell
1cup f10z = \_ -> f10z 2coffee = cup 7 3get0z aCup = aCup (\f10z -> f10z)
上のようなコードを書いてから実行すると
haskell
1*Main> get0z coffee 27
このように値が返ってくるのですが、なぜこのコードが動くのかが分かりません。
get0z という関数は右辺にラムダ関数があるので、この関数を実行するには引数1つに加えてもう一つラムダ関数に渡す用の引数が必要になる気がするのですが、なぜ今回は引数を1つしか渡していないのに動くのでしょうか?
cup 7 は \_ -> 7 であり、引数を使ってないので、get0z の右辺にあるラムダ関数 (\f10z -> f10z) は実行されません。
回答1件
あなたの回答
tips
プレビュー