Hours of hacking await! If I break, you can: 1. Restart: M-x haskell-process-restart 2. Configure logging: C-h v haskell-process-log (useful for debugging) 3. General config: M-x customize-mode 4. Hide these tips: C-h v haskell-process-show-debug-tips λ> :t () () :: () λ> :k () () :: * λ> :k Maybe Maybe :: * -> * λ> sexpr sexpr :: SExpr λ> sexpr == sexpr True λ> sexpr == sexpr2 True λ> printSExpr (SChar 'a') "\\#'a'" λ> (' ':) "abc" " abc" λ> printSExpr sexpr "(2 #\\a (#t 1.2 (*** Exception: Prelude.tail: empty list λ> printSExpr sexpr "( 2 #\\a ( #t 1.2 ()))" λ> printSExpr sexpr "( 2 #\\a ( #t 1.2 ()))" λ> countAtoms sexpr 4 λ> countAtoms sexpr 4 λ> concat [[1,2,3],[4,5,6],[7,8,9]] [1,2,3,4,5,6,7,8,9] λ> concat [[[1,2,3],[4,5,6],[7,8,9]]] [[1,2,3],[4,5,6],[7,8,9]] λ> :t concat concat :: Foldable t => t [a] -> [a] λ> flatten sexpr SList {getList = [SInt 2,SChar 'a',SBool True,SDouble 1.2]} λ> :t Data.List.concat Data.List.concat :: Foldable t => t [a] -> [a] λ>