data Nested a
= Value a
| List [ Nested a]
nested = [ nestedTwo, Value 1 ]
nestedTwo = List [ nested, Value 2 ]
( ! ) :: Nested a
-> Int -> Nested a
( ! ) ( List xs) n = xs !! n
main = do
print $ nestedTwo
! 0 ! 1 ;
print $ nestedTwo
! 0 ! 0 ! 1 ;
ZGF0YSBOZXN0ZWQgYQogICAgPSBWYWx1ZSBhCiAgICB8IExpc3QgW05lc3RlZCBhXQogICAgZGVyaXZpbmcgKEVxLCBTaG93KQoKbmVzdGVkIDo6IE5lc3RlZCBJbnQKbmVzdGVkID0gW25lc3RlZFR3bywgVmFsdWUgMV0KbmVzdGVkVHdvID0gTGlzdCBbbmVzdGVkLCBWYWx1ZSAyXQoKKCEpIDo6IE5lc3RlZCBhIC0+IEludCAtPiBOZXN0ZWQgYQooISkgKFZhbHVlIF8pIF8gPSB1bmRlZmluZWQKKCEpIChMaXN0IHhzKSBuID0geHMgISEgbgoKbWFpbiA9IGRvCglwcmludCAkIG5lc3RlZFR3byAhIDE7CglwcmludCAkIG5lc3RlZFR3byAhIDAgISAxOwoJcHJpbnQgJCBuZXN0ZWRUd28gISAwICEgMCAhIDE7
compilation info
[1 of 1] Compiling Main ( prog.hs, prog.o )
prog.hs:7:10:
Couldn't match expected type `Nested Int'
with actual type `[Nested Int]'
In the expression: [nestedTwo, Value 1]
In an equation for `nested': nested = [nestedTwo, Value 1]
stdout