Hatena::Groupgeneration1986

最後に改行がないとコンパイルできない [suu-gの日記]

 | 

2008-03-12んー

List.filter超便利

| 12:25

# let exp = fun lst atm ->
  	List.filter (fun a -> a = atm) lst;;

こ れ で 終 わ り ! !

一回しか使わないなら、 List.filter(fun a -> a = "hogehoge") だけでその関数の意味になる*1。(組み込みの)高階関数は超便利ですね、びっくりした。


ラムダ式かわいいよラムダ式

*1:その後、その関数にリストを適用する

hogeloghogelog2008/03/13 09:05filter ("aaa" ==) ["aaa", "bbb", "ccc", "aaa"]
「Haskellでは組み込みの関数を組み合わせて目的とする処理を成し遂げるのがKool!」ってばっちゃが言ってた。

OCamlだとList.filterがあるからやっぱそっち使うとか。

SchemerとかSICPとかやると組み込みの便利なほげほげを使うという発想が消えるという楽しさがあるね。

suu-gsuu-g2008/03/13 12:24ツッコミありがとう!
さっそくList.filterを使ってみたけど、組み込みの高階関数って本当に便利なのね。

syou6162syou61622008/03/13 12:32ふむふむ

hogeloghogelog2008/03/13 13:31個人的には、引数の順序はこうしたい気もする。
let exp atm lst = List.filter (fun a -> a = atm) lst;;
そしたら(exp "hogehoge")でatmだけ束縛して、簡単に「"hogehoge"と一致する要素だけとってくるフィルター」とか作れて良い気がした。lstだけ束縛した関数はあんまし使いどころ無さげな気するし。

suu-gsuu-g2008/03/13 20:17あ、なるほど、fun a b -> hoge っていうのは fun a -> fun b -> hoge の構文シュガーみたいなものなのか。
(いま手計算してみて、引数の順番が変わらないことにちょっと驚いた)
部分適用って非常にλで良いですね!

suztomosuztomo2008/03/14 00:35suu_gはcurry化を身に着けた。

hogeloghogelog2008/03/14 14:39まさしくシンタックス糖衣です。

JacobyJacoby2012/01/27 18:04Umm, are you rellay just giving this info out for nothing?

mfdndilgmfdndilg2012/02/01 00:36kV8vOV , [url=http://ccvwujowdagl.com/]ccvwujowdagl[/url], [link=http://degassodawgp.com/]degassodawgp[/link], http://zydtyyasleze.com/

 |