#:g1: GOOでL-99 (P16 周期Nで要素を間引く)

Posted 2008-05-15 15:24:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
GOOでは、CLで有名なRichard C. Water氏のSERIESを手本にした遅延評価のシリーズが組み込みで用意されています。
rangeや、from等、scan-rangeっぽいものがあるのですが、汎用的なforループの中で使えるというところが便利です。

;(drop '(a b c d e f g h i j k) 3)
;=> (a b d e g h j k)

;(drop #(a b c d e f g h i j k) 3) ;=> #(a b d e g h j k)

;(drop #[a b c d e f g h i j k] 3) ;=> #[a b d e g h j k]

;(drop "abcdefghijk" 3) ;=> "abdeghjk"

(dg drop (u|<seq> n|<int> => <seq>))

(dm drop (u|<seq> n|<int> => <seq>) (def res (packer-fab <lst>)) (for ((x u) (cnt (from 1))) (unless (zero? (rem cnt n)) (pack-in res x))) (as (class-of u) (packed res)))


comments powered by Disqus