data Nested a
= Value a
| List [Nested a]
nested = List [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;
ZGF0YSBOZXN0ZWQgYQogICAgPSBWYWx1ZSBhCiAgICB8IExpc3QgW05lc3RlZCBhXQogICAgZGVyaXZpbmcgKEVxLCBTaG93KQoKbmVzdGVkIDo6IE5lc3RlZCBJbnQKbmVzdGVkID0gTGlzdCBbbmVzdGVkVHdvLCBWYWx1ZSAxXQpuZXN0ZWRUd28gPSBMaXN0IFtuZXN0ZWQsIFZhbHVlIDJdCgooISkgOjogTmVzdGVkIGEgLT4gSW50IC0+IE5lc3RlZCBhCighKSAoVmFsdWUgXykgXyA9IHVuZGVmaW5lZAooISkgKExpc3QgeHMpIG4gPSB4cyAhISBuCgptYWluID0gZG8KCXByaW50ICQgbmVzdGVkVHdvICEgMTsKCXByaW50ICQgbmVzdGVkVHdvICEgMCAhIDE7CglwcmludCAkIG5lc3RlZFR3byAhIDAgISAwICEgMTs=