Cookbook/Compilers and interpreters: Difference between revisions
< Cookbook
(→GHC) |
(→GHC: pre) |
||
Line 9: | Line 9: | ||
| compiling and linking an executable | | compiling and linking an executable | ||
| --make | | --make | ||
|< | |<pre>ghc --make Main.hs --> Main</pre> | ||
|- | |- | ||
| compiling without linking | | compiling without linking | ||
| -c | | -c | ||
|< | |<pre>ghc -c Foo.hs --> Foo.hi, Foo.o</pre> | ||
|- | |- | ||
| generating Assembler code | | generating Assembler code | ||
| -S | | -S | ||
|< | |<pre>ghc -S Foo.hs --> Foo.hi, Foo.s</pre> | ||
|- | |- | ||
| generating C code | | generating C code | ||
| -C | | -C | ||
|< | |<pre>ghc -C Foo.hs --> Foo.hc, Foo.hi</pre> | ||
|- | |- | ||
| linking files into an executable | | linking files into an executable | ||
| -o | | -o | ||
|< | |<pre>ghc -o test Foo.o Bar.o Baz.p --> test</pre> | ||
|} | |} | ||
Revision as of 08:58, 31 August 2009
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
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. |
Hugs
TODO