4

ZVON では、takeWhile 関数に提供される定義の 1 つが次のとおりです。

Input: takeWhile (\x -> 6*x < 100) [1..20]

Output: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

(\x -> 6*x < 100)誰かがその部分が何を意味するのか説明できますか?

4

4 に答える 4

8

もともと、アロンゾ・チャーチは関数式の変数をサーカムフレックスでマークしたいと考えていました(ŷ.x(yz))が、当時のプリンストン印刷機ではそれができませんでした。次に、少なくともvars の前に次のようにキャレット(^y.x(yz))を出力したいと考えていました:が、それもできませんでした。

次善の策は、代わりにギリシャ文字のラムダを使用することでした。それはすべて単なるタイプミスでした。(λy.x(yz))

現在、ASCII 端末では文字 を使用することさえできないため、Haskell では代わりにバックスラッシュを使用します (元のラムダ式表記λのドットの代わりに矢印を使用します)。

(\y -> x (y z))

gは次のような関数を表します

g y = x (y z)

出典:どこか覚えていないので、どこかで読んでください。

于 2013-04-26T21:53:43.627 に答える