#:g1: split-sequenceの紹介

Posted 2014-11-15 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の320日目です。

split-sequenceとはなにか

 split-sequenceは、Sharp Lispers作のシークエンスをデリミタで分割するライブラリです。

パッケージ情報

パッケージ名split-sequence
Quicklisp
CLiKiCLiki: SPLIT-SEQUENCE
Quickdocssplit-sequence | Quickdocs
CL Test Grid: ビルド状況split-sequence | CL Test Grid

インストール方法

(ql:quickload :split-sequence)

試してみる

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

 1998年頃のcomp.lang.lispで初心者の質問でsplitの話題が出たらしいのですが、色々な実装がレスの中であるうちArthur Lemmens氏の実装がsplit-sequenceの元になったみたいです。
仕様と動作は、Common Lispの流儀に則ったものになっています。

(split-sequence:split-sequence #\, "foo,bar,baz")
;=>  ("foo" "bar" "baz")
;    11

(split-sequence:split-sequence-if (lambda (c) (char= #\, c)) "foo,bar,baz") ;=> ("foo" "bar" "baz") ; 11

(split-sequence:split-sequence-if-not #'alphanumericp "foo,bar,baz") ;=> ("foo" "bar" "baz") ; 11

まとめ

 今回は、split-sequenceを紹介してみました。
初心者の質問に答える形で誕生したという経緯のためか、ソースコードも非常に教育的です。
コードは短かいですが、Common Lispの流儀が学べる教材としても有用ではないでしょうか。

comments powered by Disqus