#:g1: GOOでL-99 (P17 指定した位置でリストを分割)

Posted 2008-05-24 06:32:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
GOOには、splitが既に存在しているのですが、Perlのsplitと同じようなもののため、my-splitとして作成。
また、GOOには多値がないのですが、その代わりとしては、タプルを使うことになっていようです。
色々な型に対応するということで、分割した結果をタプルで返すことにしてみました。
seqは、CLのsubseqに相当し、seq*は、(seq x (len seq))と同様の働きをするものです。

(my-split '(a b c d e f g h i k) 3)
;==> #((a b c) (d e f g h i k))

(my-split #(a b c d e f g h i k) 3) ;==> #((a b c) (d e f g h i k))

(my-split #[a b c d e f g h i k] 3) ;==> #(#[a b c] #[d e f g h i k])

(my-split "abcdefghik" 3) ;==> #("abc" "defghik")

(dg my-split (u|<seq> pos|<int> => <seq>))

(dm my-split (u|<seq> pos|<int> => <seq>) (tup (sub u 0 pos) (sub* u pos)))


comments powered by Disqus