Difference between revisions of "User:Lenny222/Haskell explained to the busy"

From HaskellWiki
Jump to navigation Jump to search
(→‎Introduction: move to sections)
Line 4: Line 4:
   
 
== Introduction ==
 
== Introduction ==
{| class="wikitable"
 
|-
 
   
 
=== What is Haskell? ===
! Question
 
 
Haskell is a purely functional, lazy, statically typed programming language
! Answer
 
  +
|-
 
 
=== What is a '''purely functional''' programming language? ===
|What is Haskell?
 
 
What is good about that?
| Haskell is a purely functional, lazy, statically typed programming language
 
  +
|-
 
|What is a '''purely functional''' programming language?
+
=== What is a '''lazy''' programming language? ===
  +
What is good about that?
| TODO
 
  +
|-
 
|What is good about a purely functional programming language?
+
=== What is a '''statically typed''' programming language ===
  +
What is good about that?
| TODO
 
  +
|-
 
 
=== Is Haskell '''Open Source'''? ===
|What is a '''lazy''' programming language?
 
 
=== Why the name '''"Haskell"'''? ===
| TODO
 
 
Haskell is named after the American mathematician [http://en.wikipedia.org/wiki/Haskell_Curry Haskell Curry]
|-
 
|What is good about a lazy programming language?
 
| TODO
 
|-
 
|What is a '''statically typed''' programming language?
 
| TODO
 
|-
 
|What is good about a statically typed programming language?
 
| TODO
 
|-
 
|Is Haskell '''Open Source'''?
 
| TODO
 
|-
 
|Why the name '''"Haskell"'''?
 
| Haskell is named after the American mathematician [http://en.wikipedia.org/wiki/Haskell_Curry Haskell Curry]
 
|}
 
   
 
== Basics ==
 
== Basics ==

Revision as of 10:18, 1 October 2009

You have heard about Haskell but don't have the time to find out what it is?

This page may be for you.

Introduction

What is Haskell?

Haskell is a purely functional, lazy, statically typed programming language

What is a purely functional programming language?

What is good about that?

What is a lazy programming language?

What is good about that?

What is a statically typed programming language

What is good about that?

Is Haskell Open Source?

Why the name "Haskell"?

Haskell is named after the American mathematician Haskell Curry

Basics

Question Answer
What is the meaning of the double colon "::"? TODO
What is the meaning of the square brackets "[" and "]"? TODO
What is the meaning of the colon ":"? ":" is an infix operator that adds an element to the beginning of a list

For example:

1 : [2,3]

will result in the new list

[1,2,3]
What is an infix operator? Infix operators are normal functions. TODO: symbols, round brackets

For example:

5 + 2

is the same as

(+) 5 2
Are there any prefix operators? TODO
What is the meaning of the backtick "`"? A function enclosed in "`"s can be used as an infix operator.

For example:

subtract 2 10

is the same as

2 `subtract` 10
What is the meaning of the tick " ' "? TODO: single characters, common usage in function names
How do you define a function in Haskell? TODO

For example:

add x y = x + y
Didn't you say Haskell is statically typed? It is. TODO
What is the meaning of the double dash "--"? "-- " (a trailing space is necessary) begins a single-line comment. The rest of the line will be ignored by the compiler.

For example:

-- Sort the list
sort [3,2,4]

or

sort [3,2,4] -- Sort the list
What is the meaning of "{-" and "-}"? "{- " (a trailing space is necessary) and "-}" define a block comment. Everything in between will be ignored by the compiler.

For example:

{-
The next line would sort the list, if it wasn't in a block comment
sort [3,2,4]
-}
What is the meaning of the dollar sign "$"? "$" is a way to compose functions, but avoid typing too many brackets.

For example:

foo x = h (g (f x))

is the same as

foo x = h $ g $ f x
What is the meaning of the dot "."? "." is used to compose functions in point-free style, similar to "$".

For example:

foo x = h $ g $ f x

is the same as

foo = h . g . f
What is point-free style? Point-free style is a way to define functions solely as a composition of other functions, leaving out arguments in the definition.

For example:

takeFive x = take 5 x

is the same as

takeFive = take 5

in point-free style.

What is the meaning of "data"? "data" defines a new data type. TODO

For example:

data colors = Red | Blue | Green
What is the meaning of "deriving"? TODO
What is the meaning of "newtype"? TODO
What is the meaning of "type"? TODO
What is currying? TODO
What is pattern matching? TODO
What is the meaning of the backslash "\"? TODO: multiline strings, lambda function
What is the meaning of the downslash "¦"? TODO: pattern matching, data types

Advanced

Question Answer
What is the meaning of "{-#" and "#-}"? "{-# " (the trailing space is necessay) and "#-}" define compiler pragmas. TODO
What is a Monad? TODO
What is the meaning of "forall"? TODO