プログラミングHaskellをClojureで解く P.12

シーケンスのサイズってどうやって取得するんだろう??

Haskell
Prelude> head [1,2,3,4,5]
1

Clojure
user=> (first [1 2 3 4 5])
1
Haskell
Prelude> tail [1,2,3,4,5]
[2,3,4,5]

Clojure
user=> (rest [1 2 3 4 5])
(2 3 4 5)
Haskell
Prelude> [1,2,3,4,5]!!2
3

Clojure
user=> (defn get_ [vec idx] (subvec vec idx (+ idx 1)))
#'user/get_
user=> (get [1,2,3,4,5] 2)
3
Haskell
Prelude> take 3 [1,2,3,4,5]
[1,2,3]

Clojure
user=> (take 3 [1 2 3 4 5])
(1 2 3)
Haskell
Prelude> drop 3 [1,2,3,4,5]
[4,5]

Clojure
user=> (drop 3 [1,2,3,4,5])
(4 5)
Haskell
Prelude> length [1,2,3,4,5]
5

Clojure
不明・・・
Haskell
Prelude> sum [1,2,3,4,5]
15

Clojure
前のエントリでかいたfrom-toではイマイチ
Haskell
Clojure
product この1っこ前のエントリ
Haskell
Prelude> [1,2,3] ++ [4,5]
[1,2,3,4,5]

Clojure
user=> (concat [1 2 3] [4,5])
(1 2 3 4 5)
Haskell
Prelude> reverse [1,2,3,4,5]
[5,4,3,2,1]

Clojure
user=> (reverse [1 2 3 4 5])
(5 4 3 2 1)
Haskell
Prelude> 1 `div` 0
*** Exception: divide by zero
Prelude> head []
*** Exception: Prelude.head: empty list

Clojure
user=> (/ 1 0)
java.lang.ArithmeticException: Divide by zero (NO_SOURCE_FILE:0)
user=> (first [])
nil