Personal tools

Cookbook/Compilers and interpreters

From HaskellWiki

< Cookbook(Difference between revisions)
Jump to: navigation, search
(GHC)
(GHC: pre)
Line 9: Line 9:
 
| compiling and linking an executable
 
| compiling and linking an executable
 
| --make
 
| --make
|<haskell>ghc --make Main.hs --> Main</haskell>
+
|<pre>ghc --make Main.hs --> Main</pre>
 
|-
 
|-
 
| compiling without linking
 
| compiling without linking
 
| -c
 
| -c
|<haskell>ghc -c Foo.hs --> Foo.hi, Foo.o</haskell>
+
|<pre>ghc -c Foo.hs --> Foo.hi, Foo.o</pre>
 
|-
 
|-
 
| generating Assembler code
 
| generating Assembler code
 
| -S
 
| -S
|<haskell>ghc -S Foo.hs --> Foo.hi, Foo.s</haskell>
+
|<pre>ghc -S Foo.hs --> Foo.hi, Foo.s</pre>
 
|-
 
|-
 
| generating C code
 
| generating C code
 
| -C
 
| -C
|<haskell>ghc -C Foo.hs --> Foo.hc, Foo.hi</haskell>
+
|<pre>ghc -C Foo.hs --> Foo.hc, Foo.hi</pre>
 
|-
 
|-
 
| linking files into an executable
 
| linking files into an executable
 
| -o
 
| -o
|<haskell>ghc -o test Foo.o Bar.o Baz.p --> test</haskell>
+
|<pre>ghc -o test Foo.o Bar.o Baz.p --> test</pre>
 
|}
 
|}
   

Revision as of 08:58, 31 August 2009

1 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

2 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.

3 Hugs

TODO