#:g1: YTools: mapperの紹介

Posted 2014-12-29 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の364日目です。

YTools: mapperとはなにか

 YTools: mapperは、Drew McDermott氏のユーティリティであるYtoolsの中のmap系のユーティリティです。

パッケージ情報

パッケージ名YTools: mapper
Quicklisp×
プロジェクトページHome page for Drew McDermott
CLiKiCLiki: YTools

インストール方法

 上記プロジェクトページからダウンロードしてきて適当に導入します。

試してみる

 map系のユーティリティという括りよりは、単に短かく書ける記法なのですが、どんな風に書けるかというとこんな風に書けます。

;;; map
(<# (\\ (x) x) '(1 2 3 4))
;=>  (1 2 3 4)

;;; every (<& values '(t t t t)) ;=> T

;;; funcall (>< #'list 1) ;=> (1)

;;; apply (<< list '(1 2 3 4)) ;=> (1 2 3 4)

;;; remove-if-not (<? identity '(1 2 3 nil 4)) ;=> (1 2 3 4)

;;; reduce(複数の引数が取れる) (</ + 0 '(1 1 1 1) '(10 10 10 10)) ;=> 44

それぞれ2文字で記述できます。記述量を少なくする為か関数ではなくマクロになっていて#'を書かなくて済むようになっていますが、funcall(><)だけ例外です。
ちなみに大体想像が付くかなと思いますが\\はlambdaです。

まとめ

 今回は、YTools: mapperを紹介してみました。
最初は、2文字はさすがにないだろうと思っていましたが、しばらく使ってるうちに癖になってきてしまいました。馴れとは恐しい。

comments powered by Disqus