Some minor fixes

I just noted that the example claiming that (add 10) is the same as (+10) was wrong. (A detail - it should be (10+) to match the argument order.) Then I just continued down making a few similar fixes and terminology updates. 
/Patrik

PS. I've been teaching [Advanced Functional Programming](http://www.cse.chalmers.se/edu/course/afp/) (in Haskell) for a few years at Chalmers.
This commit is contained in:
Patrik Jansson 2015-10-23 23:31:10 +02:00
parent ab67a8f4c2
commit f6b8b079b4

View File

@ -189,16 +189,16 @@ foo = add 10 -- foo is now a function that takes a number and adds 10 to it
foo 5 -- 15 foo 5 -- 15
-- Another way to write the same thing -- Another way to write the same thing
foo = (+10) foo = (10+)
foo 5 -- 15 foo 5 -- 15
-- function composition -- function composition
-- the (.) function chains functions together. -- the (.) function chains functions together.
-- For example, here foo is a function that takes a value. It adds 10 to it, -- For example, here foo is a function that takes a value. It adds 10 to it,
-- multiplies the result of that by 4, and then returns the final value. -- multiplies the result of that by 4, and then returns the final value.
foo = (*4) . (+10) foo = (4*) . (10+)
-- (5 + 10) * 4 = 60 -- 4*(10 + 5) = 60
foo 5 -- 60 foo 5 -- 60
-- fixing precedence -- fixing precedence
@ -222,7 +222,7 @@ even . fib $ 7 -- false
-- 5. Type signatures -- 5. Type signatures
---------------------------------------------------- ----------------------------------------------------
-- Haskell has a very strong type system, and everything has a type signature. -- Haskell has a very strong type system, and every valid expression has a type.
-- Some basic types: -- Some basic types:
5 :: Integer 5 :: Integer
@ -259,7 +259,7 @@ case args of
_ -> putStrLn "bad args" _ -> putStrLn "bad args"
-- Haskell doesn't have loops; it uses recursion instead. -- Haskell doesn't have loops; it uses recursion instead.
-- map applies a function over every element in an array -- map applies a function over every element in a list
map (*2) [1..5] -- [2, 4, 6, 8, 10] map (*2) [1..5] -- [2, 4, 6, 8, 10]
@ -279,7 +279,7 @@ foldl (\x y -> 2*x + y) 4 [1,2,3] -- 43
-- This is the same as -- This is the same as
(2 * (2 * (2 * 4 + 1) + 2) + 3) (2 * (2 * (2 * 4 + 1) + 2) + 3)
-- foldl is left-handed, foldr is right- -- foldl is left-handed, foldr is right-handed
foldr (\x y -> 2*x + y) 4 [1,2,3] -- 16 foldr (\x y -> 2*x + y) 4 [1,2,3] -- 16
-- This is now the same as -- This is now the same as
@ -318,7 +318,7 @@ Nothing -- of type `Maybe a` for any `a`
-- it is not hard to explain enough to get going. -- it is not hard to explain enough to get going.
-- When a Haskell program is executed, `main` is -- When a Haskell program is executed, `main` is
-- called. It must return a value of type `IO ()`. For example: -- called. It must return a value of type `IO a` for some type `a`. For example:
main :: IO () main :: IO ()
main = putStrLn $ "Hello, sky! " ++ (say Blue) main = putStrLn $ "Hello, sky! " ++ (say Blue)
@ -361,7 +361,7 @@ sayHello = do
-- You can think of a value of type `IO a` as representing a -- You can think of a value of type `IO a` as representing a
-- computer program that will generate a value of type `a` -- computer program that will generate a value of type `a`
-- when executed (in addition to anything else it does). We can -- when executed (in addition to anything else it does). We can
-- store and reuse this value using `<-`. We can also -- name and reuse this value using `<-`. We can also
-- make our own action of type `IO String`: -- make our own action of type `IO String`:
action :: IO String action :: IO String
@ -417,7 +417,7 @@ Hello, Friend!
There's a lot more to Haskell, including typeclasses and monads. These are the There's a lot more to Haskell, including typeclasses and monads. These are the
big ideas that make Haskell such fun to code in. I'll leave you with one final big ideas that make Haskell such fun to code in. I'll leave you with one final
Haskell example: an implementation of quicksort in Haskell: Haskell example: an implementation of a quicksort variant in Haskell:
```haskell ```haskell
qsort [] = [] qsort [] = []