Difference between revisions of "Cookbook"
Jump to navigation
Jump to search
(Added link to similar F# cookbook) |
|||
(19 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
+ | == Haskell Cookbook == |
||
− | [[Category:How to]] |
||
+ | * [[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]] |
||
+ | == Similar projects for other programming languages == |
||
− | {{Template:Anonymousdraft}} |
||
+ | * [http://cl-cookbook.sourceforge.net/ Common Lisp Cookbook] |
||
− | |||
− | + | * [http://pleac.sourceforge.net/ PLEAC] |
|
+ | * [http://www.zenspider.com/Languages/Ruby/Cookbook/index.html Ruby Cookbook] |
||
− | |||
− | + | * [http://schemecookbook.org/Cookbook/WebHome Scheme Cookbook] |
|
+ | * [http://fssnip.net/ F# Snippets] |
||
− | http://schemecookbook.org/Cookbook/WebHome''' |
||
+ | [[Category:FAQ]] |
||
− | == Prelude == |
||
+ | [[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 |
Latest revision as of 18:49, 26 May 2011
Haskell Cookbook
- Haskell compilers and interpreters
- Numbers
- Lists and strings
- Other data structures
- Dates and time
- Pattern matching
- Interactivity
- Files
- Network programming
- XML
- Databases access
- Graphical user interfaces
- PDF files
- FFI
- Testing