CL パッケージの最も長いシンボルを SERIES(series:collect-max)で
以前 CL パッケージで中で最も長いシンボルはどれか探すのを SERIES でやろうとした。そのとき series:collect-max の使い方をよく理解してなかった。第1引数に数値のシリーズをとるので、最大長は返せるけど、その最大長を持つシンボルは返せないと思っていた。
でも、第二引数に第一引数と対応するシンボルのシリーズを渡してやるとちゃっとシンボルの方を返してくれた。
この最大のものを返すといのは loop マクロが苦手としているところで、iterate なんかが上手に解決しているところ。SERIES でもきれいに書けてよかった。
(require :series)
(let* ((symbols (series:scan-symbols :cl))
(lengths (series:map-fn t (lambda (symbol)
(length (symbol-name symbol)))
symbols)))
(series:collect-max lengths symbols))
1 件のコメント:
なるほどこれは便利ですね!。SERIESのオプションは奥が深い(*'-')
コメントを投稿