>>> :kind! Eval (((&&) `On` Fst) '( 'True, 'Nothing) '( 'False, 'Just '())) Eval (((&&) `On` Fst) '( 'True, 'Nothing) '( 'False, 'Just '())) :: Bool = 'False
Concat :: [[a]] -> Exp [a]
>>> :kind! Eval (Concat ( '[ '[1,2], '[3,4], '[5,6]])) Eval (Concat ( '[ '[1,2], '[3,4], '[5,6]])) :: [Nat] = '[1, 2, 3, 4, 5, 6] >>> :kind! Eval (Concat ( '[ '[Int, Maybe Int], '[Maybe String, Either Double Int]])) Eval (Concat ( '[ '[Int, Maybe Int], '[Maybe String, Either Double Int]])) :: [*] = '[Int, Maybe Int, Maybe String, Either Double Int]
>>> :kind! Eval (Cons 1 '[2, 3]) Eval (Cons 1 '[2, 3]) :: [Nat] = '[1, 2, 3] >>> :kind! Eval (Cons Int '[Char, Maybe Double]) Eval (Cons Int '[Char, Maybe Double]) :: [*] = '[Int, Char, Maybe Double]
>>> :kind! Eval (Partition ((>=) 35) '[ 20, 30, 40, 50]) Eval (Partition ((>=) 35) '[ 20, 30, 40, 50]) :: ([Nat], [Nat]) = '( '[20, 30], '[40, 50])