list1 :: HCons Int (HCons Bool HNil) list2 :: HCons (Int, Int) (HCons Bool (HCons (Int -> Int) HNil)) main :: HCons Int (HCons Bool (HCons (Int, Int) (HCons Bool (HCons (Int -> Int) HNil)))) HCons[1] 42 (HCons[1] True (HCons[1] (Pair 1 0) (HCons[1] False (HCons[1] x[3] + 1> HNil[1]))))