Personal tools

Cookbook

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
Current revision (18:49, 26 May 2011) (edit) (undo)
(Added link to similar F# cookbook)
 
(19 intermediate revisions not shown.)
Line 1: Line 1:
-
[[Category:How to]]
+
== Haskell Cookbook ==
-
 
+
* [[Cookbook/Compilers and interpreters|Haskell compilers and interpreters]]
-
* [[Cookbook/Strings|Strings]]
+
* [[Cookbook/Numbers|Numbers]]
* [[Cookbook/Numbers|Numbers]]
 +
* [[Cookbook/Lists and strings|Lists and strings]]
 +
* [[Cookbook/Other data structures|Other data structures]]
* [[Cookbook/Dates And Time|Dates and time]]
* [[Cookbook/Dates And Time|Dates and time]]
-
* [[Cookbook/Lists|Lists]]
 
-
* [[Cookbook/Other data structures|Other data structures]]
 
* [[Cookbook/Pattern matching|Pattern matching]]
* [[Cookbook/Pattern matching|Pattern matching]]
* [[Cookbook/Interactivity|Interactivity]]
* [[Cookbook/Interactivity|Interactivity]]
Line 14: Line 13:
* [[Cookbook/Graphical user interfaces|Graphical user interfaces]]
* [[Cookbook/Graphical user interfaces|Graphical user interfaces]]
* [[Cookbook/PDF files|PDF files]]
* [[Cookbook/PDF files|PDF files]]
 +
* [[Cookbook/FFI|FFI]]
 +
* [[Cookbook/Testing|Testing]]
-
{{Template:Anonymousdraft}}
+
== Similar projects for other programming languages ==
-
 
+
* [http://cl-cookbook.sourceforge.net/ Common Lisp Cookbook]
-
'''We need to start a Haskell centered cookbook (aka, not a [http://pleac.sourceforge.net/ PLEAC] clone)
+
* [http://pleac.sourceforge.net/ PLEAC]
-
 
+
* [http://www.zenspider.com/Languages/Ruby/Cookbook/index.html Ruby Cookbook]
-
This page is based on the Scheme Cookbook at
+
* [http://schemecookbook.org/Cookbook/WebHome Scheme Cookbook]
-
http://schemecookbook.org/Cookbook/WebHome'''
+
* [http://fssnip.net/ F# Snippets]
-
== Prelude ==
+
[[Category:FAQ]]
-
 
+
[[Category:How to]]
-
A lot of functions are defined in the "[http://www.haskell.org/hoogle/?q=Prelude Prelude]". Also, if you ever want to search for a function, based on the name, type or module, take a look at the excellent [http://www.haskell.org/hoogle/ Hoogle]. This is for a lot of people a must-have while debugging and writing Haskell programs.
+
-
 
+
-
== 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>
+
-
 
+
-
`let' is also the way to create simple functions at the GHCi prompt
+
-
<haskell>
+
-
Prelude> let fact n = product [1..n]
+
-
Prelude> fact 5
+
-
120
+
-
</haskell>
+
-
 
+
-
 
+
-
=== Checking Types ===
+
-
To check the type of an expression or function, use the command `:t'
+
-
<haskell>
+
-
Prelude> :t x
+
-
x :: Integer
+
-
Prelude> :t "Hello"
+
-
"Hello" :: [Char]
+
-
</haskell>
+
-
Haskell has the following types defined in the [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html Standard Prelude].
+
-
<haskell>
+
-
Int -- bounded, word-sized integers
+
-
Integer -- unbounded integers
+
-
Double -- floating point values
+
-
Char -- characters
+
-
String -- equivalent to [Char], strings are lists of characters
+
-
() -- the unit type
+
-
Bool -- booleans
+
-
[a] -- lists
+
-
(a,b) -- tuples / product types
+
-
Either a b -- sum types
+
-
Maybe a -- optional values
+
-
</haskell>
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
 
+
-
== FFI ==
+
-
=== How to interface with C===
+
-
 
+
-
Magnus has written [http://therning.org/magnus/archives/315 a nice example ] on how to call a C function operating on a user defined type.
+
-
 
+
-
== Testing ==
+
-
 
+
-
=== QuickCheck ===
+
-
 
+
-
TODO
+
-
 
+
-
=== HUnit ===
+
-
 
+
-
TODO
+

Current revision

1 Haskell Cookbook

2 Similar projects for other programming languages