Difference between revisions of "Cookbook"

From HaskellWiki
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]
== Pattern Matching ==
 
  +
[2,3]
   
  +
Prelude> length [1,2,3]
  +
3
  +
</haskell>
  +
 
== Pattern Matching ==
  +
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.

Arrays

Files

Network Programming

XML

Databases

FFI