yaotti's diary

Software is Eating the World

cutの使いかた

Gaucheで、

(map (lambda (x) (* x x)) '(1 2 3))

をcutを使うなら、どう書けばいいんだろう。
cut内で特定の引数を2回以上使いたいってことなんだけど。

(let ((sq (lambda (x) (* x x))))
  (map (cut sq <>) '(1 2 3)))
  ;;pa$を使えばこう
  ;;(map (pa$ sq) '(1 2 3)))

うーん。。。
たとえば「引数の2番目を2回使う」というのをcutだけで表現できないかな。
正規表現の$1みたいなのがあればいいんだけど。

おとなしくlambda使えばいいか。



あとGaucheにはHaskellの$があるらしい。
http://d.hatena.ne.jp/SaitoAtsushi/20080803/1217772372
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3a%24
$*はapplyもするみたい。まだ挙動よくわかってないけど
Haskellの$はSICP読書会でujihisaさんが言ってたなぁ、とふと思い出した。