Difference between revisions of "Cookbook/Compilers and interpreters"
< Cookbook
Jump to navigation
Jump to search
(→GHCi) |
(→General: use a less intimidating example) |
||
(21 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== GHC == |
== GHC == |
||
+ | {| class="wikitable" |
||
− | TODO |
||
+ | |- |
||
+ | ! Problem |
||
+ | ! Solution |
||
+ | ! Examples |
||
+ | |- |
||
+ | | compiling and linking an executable |
||
+ | | --make |
||
+ | |<pre>ghc --make Main.hs --> Main</pre> |
||
+ | |- |
||
+ | | compiling without linking |
||
+ | | -c |
||
+ | |<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 11: | Line 38: | ||
! Examples |
! Examples |
||
|- |
|- |
||
− | | checking |
+ | | checking a definition |
| :i |
| :i |
||
|<haskell> |
|<haskell> |
||
− | Prelude> :i |
+ | Prelude> :i True |
− | data |
+ | data Bool = ... | True -- Defined in GHC.Bool |
− | instance (Eq a) => Eq (Maybe a) -- Defined in Data.Maybe |
||
− | instance Monad Maybe -- Defined in Data.Maybe |
||
− | instance Functor Maybe -- Defined in Data.Maybe |
||
− | instance (Ord a) => Ord (Maybe a) -- Defined in Data.Maybe |
||
− | instance (Read a) => Read (Maybe a) -- Defined in GHC.Read |
||
− | instance (Show a) => Show (Maybe a) -- Defined in GHC.Show |
||
</haskell> |
</haskell> |
||
|- |
|- |
||
− | | checking |
+ | | checking a type |
| :t |
| :t |
||
|<haskell> |
|<haskell> |
||
Prelude> :t "Hello" |
Prelude> :t "Hello" |
||
"Hello" :: [Char] |
"Hello" :: [Char] |
||
+ | |||
+ | Prelude> :t length |
||
+ | 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> |
||
|} |
|} |
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