Personal tools

Cookbook/Compilers and interpreters

From HaskellWiki

< Cookbook(Difference between revisions)
Jump to: navigation, search
(debugging)
(General: use a less intimidating example)
 
Line 41: Line 41:
 
| :i
 
| :i
 
|<haskell>
 
|<haskell>
Prelude> :i Monad
+
Prelude> :i True
class Monad m where
+
data Bool = ... | True -- Defined in GHC.Bool
(>>=) :: 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
 
 
</haskell>
 
</haskell>
 
|-
 
|-

Latest revision as of 08:33, 25 January 2010

Contents

[edit] 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

[edit] 2 GHCi

[edit] 2.1 General

Problem Solution Examples
checking a definition  :i
Prelude> :i True
data Bool = ... | True  -- Defined in GHC.Bool
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

[edit] 2.2 Debugging

Problem Solution Examples
setting a break point  :break
Prelude> :break 2    -- sets a break point in line 2

[edit] 3 Hugs

TODO