最近のLL言語だと、リストの表現として
[1..4]
のような形で、「1から始まり、4まで続くリスト」を表現できると思います。
Groovyでも当然のようにこの書き方が出来るわけですね。
listExp.groovy
def list=[1..4]
で、問題なのは、
Haskellの場合
ghci_out
Prelude> let l=[1..4]
Prelude> let m=[1,2,3,4]
Prelude> l==m
True
とごく予想通りの結果になるのに対して、Groovyでは
listExpError.groovy
assert [1..4]==[1,2,3,4]
|
false
とAssertion failedを起こしてしまいます。
これは落とし穴だよね。
(追記)
どうしてこうなるのか、というと上記の用にHaskellで見慣れている
[1..4]
という表記だとGroovyの場合
assert [[1,2,3,4]]==[1..4]
となっているわけです。
つまり、角括弧なしの
1..4
で既に[1,2,3,4]が表現されているわけですね。