Difference between revisions of "Cookbook"
Jump to navigation
Jump to search
m |
(fleshed out the sections a little) |
||
Line 1: | Line 1: | ||
− | |||
'''We need to start a GOOD (aka, not a PLEAC clone) Haskell cookbook.''' |
'''We need to start a GOOD (aka, not a PLEAC clone) Haskell cookbook.''' |
||
== GHCi/Hugs == |
== GHCi/Hugs == |
||
+ | === GHCi Interaction === |
||
+ | To start GHCi from a command prompt, simply type `ghci' |
||
+ | $ ghci |
||
+ | ___ ___ _ |
||
+ | / _ \ /\ /\/ __(_) |
||
+ | / /_\// /_/ / / | | GHC Interactive, version 6.6, for Haskell 98. |
||
+ | / /_\\/ __ / /___| | http://www.haskell.org/ghc/ |
||
+ | \____/\/ /_/\____/|_| Type :? for help. |
||
+ | |||
+ | Loading package base ... linking ... done. |
||
+ | Prelude> |
||
+ | |||
+ | [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html Prelude] is the "base" library of Haskell. |
||
+ | |||
+ | To create variables at the GHCi prompt, use `let' |
||
+ | <haskell> |
||
+ | Prelude> let x = 5 |
||
+ | Prelude> x |
||
+ | 5 |
||
+ | Prelude> let y = 3 |
||
+ | Prelude> y |
||
+ | 3 |
||
+ | Prelude> x + y |
||
+ | 8 |
||
+ | </haskell> |
||
+ | |||
+ | To check the type of an expression or function, use the command `:t' |
||
+ | <haskell> |
||
+ | Prelude> :t x |
||
+ | x :: Integer |
||
+ | </haskell> |
||
== Strings == |
== Strings == |
||
+ | === Output === |
||
+ | Strings can be output in a number of different ways. |
||
+ | <haskell> |
||
+ | Prelude> putStr "Foo" |
||
+ | FooPrelude> |
||
+ | </haskell> |
||
+ | As you can see, [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AputStr putStr] does not include the newline character `\n'. We can either use putStr like this: |
||
+ | <haskell> |
||
+ | Prelude> putStr "Foo\n" |
||
+ | Foo |
||
+ | </haskell> |
||
+ | Or use [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AputStrLn putStrLn], which is already in the Standard Prelude |
||
+ | <haskell> |
||
+ | Prelude> putStrLn "Foo" |
||
+ | Foo |
||
+ | </haskell> |
||
+ | === Concatenation === |
||
+ | Concatenation of strings is done with the `++' operator. |
||
+ | <haskell> |
||
+ | Prelude> "foo" ++ "bar" |
||
+ | "foobar" |
||
+ | </haskell> |
||
== Numbers == |
== Numbers == |
||
== Dates and Time == |
== Dates and Time == |
||
+ | Use `System.Time.getClockTime' to get a properly formatted date stamp. |
||
+ | <haskell> |
||
+ | Prelude> System.Time.getClockTime |
||
+ | Wed Feb 21 20:05:35 CST 2007 |
||
+ | </haskell> |
||
== Lists == |
== Lists == |
||
+ | Haskell has all of the general list manipulation functions. |
||
+ | <haskell> |
||
+ | Prelude> head [1,2,3] |
||
+ | 1 |
||
+ | Prelude> tail [1,2,3] |
||
⚫ | |||
+ | [2,3] |
||
+ | Prelude> length [1,2,3] |
||
+ | 3 |
||
+ | </haskell> |
||
+ | |||
⚫ | |||
+ | Haskell does implicit pattern matching. |
||
== Arrays == |
== Arrays == |
Revision as of 02:24, 22 February 2007
We need to start a GOOD (aka, not a PLEAC clone) Haskell cookbook.
GHCi/Hugs
GHCi Interaction
To start GHCi from a command prompt, simply type `ghci'
$ ghci ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.6, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base ... linking ... done. Prelude>
Prelude is the "base" library of Haskell.
To create variables at the GHCi prompt, use `let'
Prelude> let x = 5
Prelude> x
5
Prelude> let y = 3
Prelude> y
3
Prelude> x + y
8
To check the type of an expression or function, use the command `:t'
Prelude> :t x
x :: Integer
Strings
Output
Strings can be output in a number of different ways.
Prelude> putStr "Foo"
FooPrelude>
As you can see, putStr does not include the newline character `\n'. We can either use putStr like this:
Prelude> putStr "Foo\n"
Foo
Or use putStrLn, which is already in the Standard Prelude
Prelude> putStrLn "Foo"
Foo
Concatenation
Concatenation of strings is done with the `++' operator.
Prelude> "foo" ++ "bar"
"foobar"
Numbers
Dates and Time
Use `System.Time.getClockTime' to get a properly formatted date stamp.
Prelude> System.Time.getClockTime
Wed Feb 21 20:05:35 CST 2007
Lists
Haskell has all of the general list manipulation functions.
Prelude> head [1,2,3]
1
Prelude> tail [1,2,3]
[2,3]
Prelude> length [1,2,3]
3
Pattern Matching
Haskell does implicit pattern matching.