Concurrent Clean : Haskell : concatN

[id:oto-oto-oto:20060629:1151588922]
ん?これは、dependent typeになるのかな?
Cleanの型システムでは、これが限界か?(Haskellも同様?)

Start = concatN 2 (L [L [L [V 1,V 2,V 3],L [V 4,V 5,V 6]],L [],L [L [V 7],L [V 8],L [V 9]]])

::ListValue a = L [ListValue a]
              | V a

(++.) infixr 5
(++.) (L a) (L b) = L (a ++ b)

concatN _ (L []) = L []
concatN 0 (L xs) = L xs
concatN n (L [L x:xs]) = concatN (n-1) (L x) ++. concatN n (L xs)