Cookbook/Compilers and interpreters
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
GHC
Problem | Solution | Examples |
---|---|---|
compiling and linking an executable | --make | ghc --make Main.hs --> Main |
compiling without linking | -c | ghc -c Foo.hs --> Foo.hi, Foo.o |
generating Assembler code | -S | ghc -S Foo.hs --> Foo.hi, Foo.s |
generating C code | -C | ghc -C Foo.hs --> Foo.hc, Foo.hi |
linking files into an executable | -o | ghc -o test Foo.o Bar.o Baz.p --> test |
GHCi
General
Problem | Solution | Examples |
---|---|---|
checking a definition | :i | Prelude> :i Monad
class Monad m where
(>>=) :: m a -> (a -> m b) -> m b
(>>) :: m a -> m b -> m b
return :: a -> m a
fail :: String -> m a
-- Defined in GHC.Base
instance Monad Maybe -- Defined in Data.Maybe
instance Monad IO -- Defined in GHC.IOBase
instance Monad ((->) r) -- Defined in Control.Monad.Instances
instance Monad [] -- Defined in GHC.Base
|
checking a type | :t | Prelude> :t "Hello"
"Hello" :: [Char]
Prelude> :t length
length :: [a] -> Int
|
loading a file | :l | Prelude> :l Foo.hs
[1 of 1] Compiling Foo ( Foo.hs, interpreted )
Ok, modules loaded: Foo.
|
reloading all loaded files | :r | Prelude> :r
|
Debugging
Problem | Solution | Examples |
---|---|---|
setting a break point | :break | Prelude> :break 2 -- sets a break point in line 2
|
Hugs
TODO