# A Haskell A Day: Factorial Example

Example of a factorial.

fac :: Integer -> Integer fac 0 = 1 fac n | n > 0 = n * fac (n-1)

Note that this is defined using pattern matching. Note the third line, with “ | n > 0”. That is a conditional for the pattern “n”. This is called “guards” in Haskell.

Here's another way to define it.

fac = product . enumFromTo 1

Here's two examples of defining the boolean function “and”.

and1 :: Bool -> Bool -> Bool and1 a b = if a == b then a else False

another way

and2 :: Bool -> Bool -> Bool and2 True True = True and2 x y = False

Here's a example of a function that returns the root of a polynomial a*x^2 + b*x + c == 0.

roots :: (Float, Float, Float) -> (Float, Float) roots (a,b,c) = (x1, x2) where x1 = e + sqrt d / (2 * a) x2 = e - sqrt d / (2 * a) d = b * b - 4 * a * c e = - b / (2 * a)

define some list like thing to feed to roots.:

p1, p2 :: (Float, Float, Float) p1 = (1.0, 2.0, 1.0) p2 = (1.0, 1.0, 1.0)

Sample definition of a function that counts the number of elements in a list:

length :: [a] -> Integer length [] = 0 length (x:xs) = 1 + length xs

2005-10

If you have a question, put $5 at patreon and message me.