Hi,
thanks for this code! Gotta love Simpex noise.
I do have one suggestion though: [1,2,3] gives you a Haskell list. These are linked lists (not arrays), which means that calling !! i takes O(i).
Since your data doesn't change, you're probably better off using Vector, which gives O(1) indexing.