-- richard buckland -- comp1711 {- here are examples of some haskell functions using the syntax we have covered in weeks 1 - 2 -} module Week02 where -- a series of choices, uses Strings which we see next week rateIt :: String -> Int rateIt composer | composer == "" = 5 | composer == "Human Nature" = 0 | composer == "Bach" = 10 | composer == "Human Nature" = 9 | otherwise = 4 -- a function which calls other functions we have written -- (this is based on the task 1 from last year) pronounce :: String -> Int -> String pronounce language number | language == "ENGLISH" = english number | language == "WELSH" = welsh number | language == "JAPANESE" = japanese number | language == "FRENCH" = french number english :: Int -> String english number | number == 0 = "zero" | number == 1 = "one" | number == 2 = "two" lastElt :: [Int] -> Int lastElt list | ((tail list) == []) = head list | otherwise = lastElt (tail list) french :: Int -> String french number | number == 0 = "zero" | number == 1 = "un" | number == 2 = "deux" welsh :: Int -> String welsh number | number == 0 = "phaft" | number == 1 = "unphaft" | number == 2 = "deuxphat" {- japanese :: Int -> String japanese number | number == 0 = "zero" | number == 1 = "ichi" | number == 2 = "ni" -} -- or -- using pattern matching to select between 3 different definitions -- of the function: japanese :: Int -> String japanese 0 = "zero" japanese 1 = "ichi" japanses 2 = "ni"