2009/10/28

「悲しいけど、これで間にあっちゃったのよね…」とのことですが

悲しいけど、これで間にあっちゃったのよね…」とのことですが、 with-output-to-string 使うとなんだか綺麗に書けないですね。

なので根本的にズルをしてリストを string に coerce する方向で

(loop for i across "0123456789"
for pred = (evenp (char-code i))
if pred
collect i into a
else
collect i into b
finally (return (list (coerce a 'string) (coerce b 'string))))

で、無理矢理 SERIES

(require :series)
(let* ((series (series:scan "0123456789"))
(bools (series:map-fn t (lambda (x) (evenp (char-code x))) series)))
(mapcar (lambda (x) (series:collect 'string x))
(multiple-value-list (series:split series bools))))

2 件のコメント:

g000001 さんのコメント...

なるほど!勉強になります。
色んな方法がありますねー
元のエントリーでは、間に合ったと書いてましたが、その後カオスになってしまい間に合わなくなりましたw

Yoshinori Tahara さんのコメント...

カオスですか。
それもまた見てみたい気がしますw
Common Lisp にカオスは似合うよう気もしますし。