codesnippets:bindingandpatternmatching
This is an old revision of the document!
Table of Contents
Binding
A binding binds a name or even several names with a function definition.
In Haskell, a binding is defined by symbol “=” whereas
- on the left hand side
- the function name and its parameters
- or a pattern is given,
- and on the right had side the definition of the function.
- examples
- compile, error and warning free, with compiler: GHC 8.10.4, using compiler option -Wall
a) with function name and parameter
- function name an parameter (
half x), on the left hand side of the equal sign (=)halfis the function that can take parameterxhalfcan be evaluated by name with a parameter just right behind the function name (e.g.half 5)
- function definition (
x / 2), on the right hand side- if half is demanded to be evaluated then the result is delegated to function
(/)with parameter x and 2
- example
- code line:
half x = x / 2
- with compiler warning, which we ignore for didactic reasons
- executes, with output:
2.5
2) with pattern matching
Example 1
(x1, x2, x3) = (42, "Hello", "World")
…works in…
module Main where main :: IO () main = do print x1 print x2 print x3 (x1, x2, x3) = (42, "Hello", "World")
Example 2
Person name number = Person "Lutz" 1243
…works in…
module Main where main :: IO () main = do print name print number data Person = Person { sName :: String, iNumber :: Integer } Person name number = Person "Lutz" 1243
Example 3
(x1, Person x2 x3, x4) = ("...", Person "Lutz" 1243, '#')
…works in…
module Main where main :: IO () main = do print x1 print x2 print x3 print x4 data Person = Person { sName :: String, iNumber :: Integer } (x1, Person x2 x3, x4) = ("...", Person "Lutz" 1243, '#')
You could leave a comment if you were logged in.
codesnippets/bindingandpatternmatching.1618342735.txt.gz · Last modified: (external edit)
