Cookbook/Compilers and interpreters
From HaskellWiki
< Cookbook(Difference between revisions)
(→General: use a less intimidating example) |
|||
| (18 intermediate revisions not shown.) | |||
| Line 7: | Line 7: | ||
! Examples | ! Examples | ||
|- | |- | ||
| - | | | + | | compiling and linking an executable |
| + | | --make | ||
| + | |<pre>ghc --make Main.hs --> Main</pre> | ||
| + | |- | ||
| + | | compiling without linking | ||
| -c | | -c | ||
| - | |ghc -c Foo.hs | + | |<pre>ghc -c Foo.hs --> Foo.hi, Foo.o</pre> |
| + | |- | ||
| + | | generating Assembler code | ||
| + | | -S | ||
| + | |<pre>ghc -S Foo.hs --> Foo.hi, Foo.s</pre> | ||
| + | |- | ||
| + | | generating C code | ||
| + | | -C | ||
| + | |<pre>ghc -C Foo.hs --> Foo.hc, Foo.hi</pre> | ||
| + | |- | ||
| + | | linking files into an executable | ||
| + | | -o | ||
| + | |<pre>ghc -o test Foo.o Bar.o Baz.p --> test</pre> | ||
|} | |} | ||
== GHCi == | == GHCi == | ||
| + | |||
| + | === General === | ||
{| class="wikitable" | {| class="wikitable" | ||
| Line 20: | Line 38: | ||
! Examples | ! Examples | ||
|- | |- | ||
| - | | checking | + | | checking a definition |
| :i | | :i | ||
|<haskell> | |<haskell> | ||
| - | Prelude> :i | + | Prelude> :i True |
| - | + | data Bool = ... | True -- Defined in GHC.Bool | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
</haskell> | </haskell> | ||
|- | |- | ||
| - | | checking | + | | checking a type |
| :t | | :t | ||
|<haskell> | |<haskell> | ||
| Line 44: | Line 53: | ||
Prelude> :t length | Prelude> :t length | ||
length :: [a] -> Int | length :: [a] -> Int | ||
| + | </haskell> | ||
| + | |- | ||
| + | | loading a file | ||
| + | | :l | ||
| + | |<haskell> | ||
| + | Prelude> :l Foo.hs | ||
| + | [1 of 1] Compiling Foo ( Foo.hs, interpreted ) | ||
| + | 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
