Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2008-05-24

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

| 15:32 | GOOでL-99 (P17 指定した位置でリストを分割) - わだばLisperになる を含むブックマーク はてなブックマーク - GOOでL-99 (P17 指定した位置でリストを分割) - わだばLisperになる

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)))