Clojure の rest と next の違い

rest は残りの要素がない場合は空のシーケンスを返す。
next は残りの要素がない場合は nil を返す。

(next [1 2 3])(seq (rest [1 2 3])) と同じ意味。

user=> (doc rest)
-------------------------
clojure.core/rest
([coll])
  Returns a possibly empty seq of the items after the first. Calls seq on its
  argument.
nil
user=> (doc next)
-------------------------
clojure.core/next
([coll])
  Returns a seq of the items after the first. Calls seq on its
  argument.  If there are no more items, returns nil.
nil
user=> (rest [1 2 3])
(2 3)
user=> (next [1 2 3])
(2 3)
user=> (rest "hello")
(\e \l \l \o)
user=> (next "hello")
(\e \l \l \o)
user=> (rest '())
()
user=> (next '())
nil
user=> (rest "")
()
user=> (next "")
nil
プログラミングClojure
プログラミングClojure

posted with amazlet at 10.05.19
Stuart Halloway
オーム社
売り上げランキング: 8244
«
»