Cookbook/Compilers and interpreters
From HaskellWiki
< Cookbook(Difference between revisions)
(→GHC: pre) |
(→General: use a less intimidating example) |
||
| (2 intermediate revisions 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 |
| - | + | data Bool = ... | True -- Defined in GHC.Bool | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
</haskell> | </haskell> | ||
|- | |- | ||
| Line 68: | Line 61: | ||
[1 of 1] Compiling Foo ( Foo.hs, interpreted ) | [1 of 1] Compiling Foo ( Foo.hs, interpreted ) | ||
Ok, modules loaded: Foo. | Ok, modules loaded: Foo. | ||
| + | </haskell> | ||
| + | |- | ||
| + | | reloading all loaded files | ||
| + | | :r | ||
| + | |<haskell> | ||
| + | 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> | ||
|} | |} | ||
Current revision
Contents |
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
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 |
2.2 Debugging
| Problem | Solution | Examples |
|---|---|---|
| setting a break point | :break | Prelude> :break 2 -- sets a break point in line 2 |
3 Hugs
TODO
