Difference between revisions of "Cookbook/Compilers and interpreters"
< Cookbook
Jump to navigation
Jump to search
(→GHCi: reloading) |
(→General: use a less intimidating example) |
||
(One intermediate revision by the same user not shown) | |||
Line 29: | Line 29: | ||
== GHCi == |
== GHCi == |
||
+ | |||
+ | === General === |
||
{| class="wikitable" |
{| class="wikitable" |
||
Line 39: | Line 41: | ||
| :i |
| :i |
||
|<haskell> |
|<haskell> |
||
− | Prelude> :i |
+ | Prelude> :i True |
⚫ | |||
− | 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 |
||
⚫ | |||
− | 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> |
||
|- |
|- |
||
Line 74: | Line 67: | ||
|<haskell> |
|<haskell> |
||
Prelude> :r |
Prelude> :r |
||
+ | </haskell> |
||
+ | |} |
||
+ | |||
+ | === Debugging === |
||
+ | |||
+ | {| class="wikitable" |
||
+ | |- |
||
+ | ! Problem |
||
+ | ! Solution |
||
+ | ! Examples |
||
+ | |- |
||
+ | | setting a break point |
||
+ | | :break |
||
+ | |<haskell> |
||
+ | Prelude> :break 2 -- sets a break point in line 2 |
||
</haskell> |
</haskell> |
||
|} |
|} |
Latest revision as of 08:33, 25 January 2010
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 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
|
Debugging
Problem | Solution | Examples |
---|---|---|
setting a break point | :break | Prelude> :break 2 -- sets a break point in line 2
|
Hugs
TODO