Difference between revisions of "User:Lenny222/Haskell explained to the busy"
Line 8: | Line 8: | ||
Haskell is a purely functional, lazy, statically typed programming language |
Haskell is a purely functional, lazy, statically typed programming language |
||
− | === What is a |
+ | === What is a purely functional programming language? === |
What is good about that? |
What is good about that? |
||
− | === What is |
+ | === What is lazy evaluation? === |
What is good about that? |
What is good about that? |
||
− | === What is |
+ | === What is static typing? === |
What is good about that? |
What is good about that? |
||
Revision as of 10:44, 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 lazy evaluation?
What is good about that?
What is static typing?
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 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 |
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 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 currying? | TODO |
What is pattern matching? | TODO |
Advanced
Question | Answer |
---|---|
What is a Monad? | TODO |
What is the meaning of "forall"? | TODO |
Special characters, expressions and keywords
.
The dot "." is used to compose functions in point-free style, similar to "$".
Example:
foo x = h $ g $ f x
is the same as
foo = h . g . f
`
A function enclosed in back ticks "`"s can be used as an infix operator.
Example:
subtract 2 10
is the same as
2 `subtract` 10
'
Backtick TODO: single characters, common usage in function names
:
The colon ":" is an infix operator that adds an element to the beginning of a list
Example:
1 : [2,3]
will result in the new list
[1,2,3]
::
The double colon TODO
|
Downslash TODO: pattern matching, data types
\
Backslash TODO: multiline strings, lambda function
$
The dollar sign "$" is a way to compose functions, but avoid typing too many brackets.
Example:
foo x = h (g (f x))
is the same as
foo x = h $ g $ f x
--
The double dash "-- " (a trailing space is necessary) begins a single-line comment. The rest of the line will be ignored by the compiler.
Example:
-- Sort the list
sort [3,2,4]
or
sort [3,2,4] -- Sort the list
[ ]
The square brackets TODO
{- -}
"{- " (a trailing space is necessary) and "-}" define a block comment. Everything in between will be ignored by the compiler.
Example:
{-
The next line would sort the list, if it wasn't in a block comment
sort [3,2,4]
-}
{-# #-}
"{-# " (the trailing space is necessay) and "#-}" define compiler pragmas. TODO
data
"data" defines a new data type. TODO
Example:
data colors = Red | Blue | Green
deriving
TODO
newtype
TODO
type
TODO