#:g1: cl-utilitiesの紹介

Posted 2014-03-10 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の70日目です。

cl-utilitiesとはなにか

 cl-utilitiesは、Peter Scott作のユーティリティ集です。

パッケージ情報

パッケージ名cl-utilities
Quicklisp
参考サイト
Quickdocshttp://quickdocs.org/cl-utilities

インストール方法

(ql:quickload :cl-utilities)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 良くあるユーティリティ集の一つですが、当初は、定番をみんなでまとめて行こうという試みだったようにもみえます。
大体のところは、使いそうなところが集められていますが、そんなに使うのだろうかというものも混っていて面白いです。
ドキュメントもそれなりに充実しているので親切な方かなと思います。

(cl-utilities:split-sequence #\; "a;;b;c")
;=>  ("a" "" "b" "c")
;    6

(cl-utilities:split-sequence-if (lambda (x) (member x '(#\a #\b))) "abracadabra") ;=> ("" "" "r" "c" "d" "" "r" "") ; 11

(cl-utilities:split-sequence-if-not (lambda (x) (member x '(#\a #\b))) "abracadabra") ;=> ("ab" "a" "a" "ab" "a") ; 11

(cl-utilities:partition 8 (*:iota 15)) ;=> ((0 1 2 3 4 5 6 7) (9 10 11 12 13 14)) ; 15 (cl-utilities:partition-if (lambda (x) (= 8 x)) (*:iota 15)) ;=> ((0 1 2 3 4 5 6 7) (9 10 11 12 13 14)) ; 15

(cl-utilities:extremum '(1 23 3 4 5 0) #'<) ;=> 0

(cl-utilities:extrema '(3 2 1 1 2 1) #'<) ;=> (1 1 1)

(cl-utilities:n-most-extreme 2 '(3 1 2 1) #'>) ;=> (3 2)

(let ((buf (make-string 9 :initial-element #\Space)) (pos 0)) (with-input-from-string (in "foo,bar,baz") (setq pos (cl-utilities:read-delimited buf in :delimiter #\, :start pos)) (setq pos (cl-utilities:read-delimited buf in :delimiter #\, :start pos)) (setq pos (cl-utilities:read-delimited buf in :delimiter #\, :start pos)) buf)) ;=> "foobarbaz"

(cl-utilities:expt-mod 2.5 3.8 34.9) ;=> 32.521606

(mod (expt 2.5 3.8) 34.9) ;=> 32.521606

(cl-utilities:collecting (dotimes (x 10) (cl-utilities:collect x))) ;=> (0 1 2 3 4 5 6 7 8 9)

まとめ

 今回は、cl-utilitiesを紹介してみました。
Quicklisp収録のユーティリティ集は全部紹介したいところですね。

comments powered by Disqus