Difference between revisions of "Cookbook"
Jump to navigation
Jump to search
(Added link to similar F# cookbook) |
|||
(237 intermediate revisions by 27 users not shown) | |||
Line 1: | Line 1: | ||
+ | == Haskell Cookbook == |
||
− | '''We need to start a GOOD (aka, not a PLEAC clone) Haskell cookbook.''' |
||
+ | * [[Cookbook/Compilers and interpreters|Haskell compilers and interpreters]] |
||
+ | * [[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/Pattern matching|Pattern matching]] |
||
+ | * [[Cookbook/Interactivity|Interactivity]] |
||
+ | * [[Cookbook/Files|Files]] |
||
+ | * [[Cookbook/Network programming|Network programming]] |
||
+ | * [[Cookbook/XML|XML]] |
||
+ | * [[Cookbook/Databases access|Databases access]] |
||
+ | * [[Cookbook/Graphical user interfaces|Graphical user interfaces]] |
||
+ | * [[Cookbook/PDF files|PDF files]] |
||
+ | * [[Cookbook/FFI|FFI]] |
||
+ | * [[Cookbook/Testing|Testing]] |
||
+ | == Similar projects for other programming languages == |
||
− | == GHCi/Hugs == |
||
+ | * [http://cl-cookbook.sourceforge.net/ Common Lisp Cookbook] |
||
− | === GHCi Interaction === |
||
+ | * [http://pleac.sourceforge.net/ PLEAC] |
||
− | To start GHCi from a command prompt, simply type `ghci' |
||
+ | * [http://www.zenspider.com/Languages/Ruby/Cookbook/index.html Ruby Cookbook] |
||
− | |||
+ | * [http://schemecookbook.org/Cookbook/WebHome Scheme Cookbook] |
||
− | $ ghci |
||
+ | * [http://fssnip.net/ F# Snippets] |
||
− | ___ ___ _ |
||
+ | [[Category:FAQ]] |
||
− | / _ \ /\ /\/ __(_) |
||
+ | [[Category:How to]] |
||
− | / /_\// /_/ / / | | 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> |
||
− | |||
− | == Types == |
||
− | To check the type of an expression or function, use the command `:t' |
||
− | <haskell> |
||
− | Prelude> :t x |
||
− | x :: Integer |
||
− | Prelude> :t y |
||
− | y :: Integer |
||
− | </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 -- strings |
||
− | () -- the unit type |
||
− | Bool -- booleans |
||
− | [a] -- lists |
||
− | (a,b) -- tuples / product types |
||
− | Either a b -- sum types |
||
− | Maybe a -- optional values |
||
− | </haskell> |
||
− | |||
− | == Strings == |
||
− | === Input === |
||
− | Strings can be read as input using [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3AgetLine getLine]. |
||
− | <haskell> |
||
− | Prelude> getLine |
||
− | Foo bar baz |
||
− | "Foo bar baz" |
||
− | </haskell> |
||
− | |||
− | === 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> |
||
− | We can also use [http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3Aprint print] to print a string, '''including the quotation marks.''' |
||
− | <haskell> |
||
− | Prelude> print "Foo" |
||
− | "Foo" |
||
− | </haskell> |
||
− | |||
− | === Concatenation === |
||
− | Concatenation of strings is done with the `++' operator. |
||
− | <haskell> |
||
− | Prelude> "foo" ++ "bar" |
||
− | "foobar" |
||
− | </haskell> |
||
− | |||
− | == Numbers == |
||
− | |||
− | |||
− | == 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 == |
||
− | 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> |
||
− | |||
− | == Pattern Matching == |
||
− | Haskell does implicit pattern matching. |
||
− | |||
− | == Arrays == |
||
− | |||
− | |||
− | == Files == |
||
− | |||
− | |||
− | == Network Programming == |
||
− | |||
− | |||
− | == XML == |
||
− | |||
− | |||
− | == Databases == |
||
− | |||
− | |||
− | == FFI == |
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