1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-01-17 21:49:22 +01:00

Merge pull request #1758 from patrikja/patch-2

Some minor fixes
This commit is contained in:
ven 2016-02-11 16:54:21 +01:00
commit 67b36fb8fe

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 operator `.` chains functions together. -- the operator `.` 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
@ -432,7 +432,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 [] = []