Mercurial > repos > other > SevenLanguagesInSevenWeeks
view 7-Haskell/factorial.hs @ 93:39084e2b8744
Add a function for word-aware text wrapping
Potentially hugely inefficient because we iterate through the
string character by character, but then splitting it first and
iterating over words still needs to iterate over the string to
know where to split.
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 18 Jun 2019 21:05:00 +0100 |
parents | 2b5341fc4555 |
children |
line wrap: on
line source
module Factorial where -- The book says to use "Main", but that now triggers "The IO action ‘main’ is not defined in module ‘Main’". https://optimistictypes.com/compiler-errors/#module-main-where says Main is special and must have a function "main". -- Instead we'll use our own module name, because it doesn't seem to be important (yet). -- Without pattern matching fact :: Integer -> Integer -- Note how this is like a Python "x if a else y" fact x = if x == 0 then 1 else x * fact (x - 1) -- With pattern matching factorial :: Integer -> Integer factorial 0 = 1 factorial x = x * factorial(x - 1) -- With guards factorial_guard :: Integer -> Integer factorial_guard x -- List of definitions, which look similar to the pattern matching but without the function name | x > 1 = x * factorial(x - 1) -- And the fallback "otherwise" result | otherwise = 1