GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Prelude> :load "NaturalsInClass.hs" [1 of 2] Compiling Nat ( Nat.hs, interpreted ) [2 of 2] Compiling NaturalsInClass ( NaturalsInClass.hs, interpreted ) Ok, modules loaded: Nat, NaturalsInClass. *NaturalsInClass> Zero `mult` (Succ Zero) Zero *NaturalsInClass> (Succ (Succ Zero)) (Succ (Succ (Succ Zero))) :4:1: Couldn't match expected type `Nat -> t' with actual type `Nat' Relevant bindings include it :: t (bound at :4:1) The function `Succ' is applied to two arguments, but its type `Nat -> Nat' has only one In the expression: (Succ (Succ Zero)) (Succ (Succ (Succ Zero))) In an equation for `it': it = (Succ (Succ Zero)) (Succ (Succ (Succ Zero))) *NaturalsInClass> (Succ (Succ Zero)) `mult` (Succ (Succ (Succ Zero))) Succ (Succ (Succ (Succ (Succ (Succ Zero))))) *NaturalsInClass> (fromInteger' 20) `mult` (fromInteger' 30) Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) *NaturalsInClass> (toInteger' (fromInteger' 20) `mult` (fromInteger' 30)) :7:2: Couldn't match expected type `Nat' with actual type `Integer' In the first argument of `mult', namely `toInteger' (fromInteger' 20)' In the expression: (toInteger' (fromInteger' 20) `mult` (fromInteger' 30)) *NaturalsInClass> (toInteger' ((fromInteger' 20) `mult` (fromInteger' 30))) 600 *NaturalsInClass> :cd c:/cygwin64/home/leavens/classes/cop4020/lectures/haskell-functional/ Warning: changing directory causes all loaded modules to be unloaded, because the search path has changed. Prelude> :load "EvalInClass.hs" [1 of 1] Compiling EvalInClass ( EvalInClass.hs, interpreted ) EvalInClass.hs:17:40: Couldn't match expected type `Value' with actual type `Integer' In the second argument of `(-)', namely `i2' In the expression: (IV i1 - i2) Failed, modules loaded: none. Prelude> :load "EvalInClass.hs" [1 of 1] Compiling EvalInClass ( EvalInClass.hs, interpreted ) Ok, modules loaded: EvalInClass. *EvalInClass> eval (BoolLit True) BV True *EvalInClass> eval (If (Equal (IntLit 4) (IntLit 5)) (IntLit 7) (IntLit 9)) IV 9 *EvalInClass> :load "EvalInClass.hs" [1 of 1] Compiling EvalInClass ( EvalInClass.hs, interpreted ) EvalInClass.hs:27:43: Couldn't match expected type `Bool' with actual type `Exp' In the first argument of `BV', namely `e2' In the expression: (BV e2) Failed, modules loaded: none. Prelude> -- evaluating {: map :: (a -> b).. :} :17:3: The type signature for `map' lacks an accompanying binding Prelude> -- evaluating {: map :: (a -> b).. :} :25:3: The type signature for `map' lacks an accompanying binding Prelude> -- evaluating {: map :: (a -> b).. :} :33:3: The type signature for `map' lacks an accompanying binding Prelude> :load "MapInClassTests.hs" [1 of 3] Compiling Testing ( Testing.lhs, interpreted ) [2 of 3] Compiling MapInClass ( MapInClass.hs, interpreted ) [3 of 3] Compiling MapInClassTests ( MapInClassTests.hs, interpreted ) MapInClassTests.hs:9:14: Ambiguous occurrence `map' It could refer to either `Prelude.map', imported from `Prelude' at MapInClassTests.hs:2:8-22 (and originally defined in `GHC.Base') or `MapInClass.map', imported from `MapInClass' at MapInClassTests.hs:3:1-17 (and originally defined at MapInClass.hs:5:1-3) MapInClassTests.hs:10:14: Ambiguous occurrence `map' It could refer to either `Prelude.map', imported from `Prelude' at MapInClassTests.hs:2:8-22 (and originally defined in `GHC.Base') or `MapInClass.map', imported from `MapInClass' at MapInClassTests.hs:3:1-17 (and originally defined at MapInClass.hs:5:1-3) MapInClassTests.hs:11:14: Ambiguous occurrence `map' It could refer to either `Prelude.map', imported from `Prelude' at MapInClassTests.hs:2:8-22 (and originally defined in `GHC.Base') or `MapInClass.map', imported from `MapInClass' at MapInClassTests.hs:3:1-17 (and originally defined at MapInClass.hs:5:1-3) MapInClassTests.hs:12:14: Ambiguous occurrence `map' It could refer to either `Prelude.map', imported from `Prelude' at MapInClassTests.hs:2:8-22 (and originally defined in `GHC.Base') or `MapInClass.map', imported from `MapInClass' at MapInClassTests.hs:3:1-17 (and originally defined at MapInClass.hs:5:1-3) MapInClassTests.hs:13:14: Ambiguous occurrence `map' It could refer to either `Prelude.map', imported from `Prelude' at MapInClassTests.hs:2:8-22 (and originally defined in `GHC.Base') or `MapInClass.map', imported from `MapInClass' at MapInClassTests.hs:3:1-17 (and originally defined at MapInClass.hs:5:1-3) MapInClassTests.hs:14:14: Ambiguous occurrence `map' It could refer to either `Prelude.map', imported from `Prelude' at MapInClassTests.hs:2:8-22 (and originally defined in `GHC.Base') or `MapInClass.map', imported from `MapInClass' at MapInClassTests.hs:3:1-17 (and originally defined at MapInClass.hs:5:1-3) Failed, modules loaded: MapInClass, Testing. *MapInClass> :load "MapInClassTests.hs" [1 of 3] Compiling Testing ( Testing.lhs, interpreted ) [2 of 3] Compiling MapInClass ( MapInClass.hs, interpreted ) [3 of 3] Compiling MapInClassTests ( MapInClassTests.hs, interpreted ) Ok, modules loaded: MapInClassTests, MapInClass, Testing. *MapInClassTests> map (+20) [5 .. 13] [25,26,27,28,29,30,31,32,33] *MapInClassTests> map (+20) [] [] *MapInClassTests> map (\i -> i+20) [5 .. 13] [25,26,27,28,29,30,31,32,33] *MapInClassTests> :load "MapInClass.hs" [1 of 1] Compiling MapInClass ( MapInClass.hs, interpreted ) Ok, modules loaded: MapInClass. *MapInClass> map2 (*) [(1,2),(10,5),(9,7)] :45:1: No instance for (Show ((a0, b0) -> (a0, b0))) arising from a use of `print' In a stmt of an interactive GHCi command: print it *MapInClass> map2 (*) [] :46:1: No instance for (Show ((a0, b0) -> (a0, b0))) arising from a use of `print' In a stmt of an interactive GHCi command: print it *MapInClass> (map2 (*) []) :47:1: No instance for (Show ((a0, b0) -> (a0, b0))) arising from a use of `print' In a stmt of an interactive GHCi command: print it *MapInClass> :load "MapInClass.hs" [1 of 1] Compiling MapInClass ( MapInClass.hs, interpreted ) Ok, modules loaded: MapInClass. *MapInClass> map2 (\(n,m) -> n*m) [(1,2),(3,4)] [2,12] *MapInClass>