From 250335f16ba2132f4e29ba39032ae61b49f635ea Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Thu, 26 Dec 2019 12:45:11 +0100 Subject: [PATCH] progress --- src/css/mk.css | 20 +- src/posts/0010-Haskell-Now/fib_lazy.hs | 2 +- src/posts/0010-Haskell-Now/fib_lazy_trace.hs | 11 + src/posts/0010-Haskell-Now/index.org | 1087 +++++++++-------- src/posts/0010-Haskell-Now/infinite_tree.hs | 30 +- src/posts/0010-Haskell-Now/infinite_tree_2.hs | 46 +- src/posts/0010-Haskell-Now/io_sum_ask.hs | 19 + src/posts/0010-Haskell-Now/io_sum_safe.hs | 16 +- src/posts/0010-Haskell-Now/shell.nix | 45 +- ...with-the-disappearing-bust-of-voltaire.jpg | Bin 0 -> 144521 bytes 10 files changed, 682 insertions(+), 594 deletions(-) create mode 100644 src/posts/0010-Haskell-Now/fib_lazy_trace.hs create mode 100644 src/posts/0010-Haskell-Now/io_sum_ask.hs create mode 100644 src/posts/0010-Haskell-Now/slave-market-with-the-disappearing-bust-of-voltaire.jpg diff --git a/src/css/mk.css b/src/css/mk.css index 0e83a8a..50c32ba 100644 --- a/src/css/mk.css +++ b/src/css/mk.css @@ -2,13 +2,19 @@ Author: Yann Esposito */ /* Fonts */ +:root { + --lh: 16px; +} body { font: 14px/1.4 monospace; - line-height: 16px; + line-height: var(--lh); } pre, pre code { line-height: 1em; } +blockquote pre { + line-height: var(--lh); +} /* Layout */ body, h1, h2, h3, h4, h5, h6, pre, code, blockquote, ol, ul, ol ol, ul ul, ul ol, ol ul, li, p, section, header, footer, img { @@ -20,8 +26,8 @@ ul, li, p, section, header, footer, img { } h1, h2, h3, h4, h5, h6, pre, code, blockquote, p, ul, ol, section, header, figure,table { - margin-top: 1em; - margin-bottom: 1em; + margin-top: var(--lh); + margin-bottom: var(--lh); } li { display: block; @@ -122,7 +128,7 @@ hr { margin:0; } #table-of-contents { - margin-bottom: 1em; + margin-bottom: var(--lh); } #postamble:before, hr:after { text-align: center; @@ -186,7 +192,7 @@ figure, .figure { margin-top: 0; } #postamble { - margin-top: 1em; + margin-top: var(--lh); } .timestamp-wrapper { font-size: 12px; @@ -252,9 +258,9 @@ figure, .figure { @media (prefers-color-scheme: light) { :root { --bg: var(--b3); - --fg: var(--b00); + --fg: var(--b01); --bg2: var(--b2); - --fg2: var(--b1); + --fg2: var(--b00); --rfg: var(--b01); --rbg: var(--b2); --bdr: var(--b2); diff --git a/src/posts/0010-Haskell-Now/fib_lazy.hs b/src/posts/0010-Haskell-Now/fib_lazy.hs index c91e058..9352074 100644 --- a/src/posts/0010-Haskell-Now/fib_lazy.hs +++ b/src/posts/0010-Haskell-Now/fib_lazy.hs @@ -1,4 +1,4 @@ fib :: [Integer] fib = 1:1:zipWith (+) fib (tail fib) -main = traverse_ print (take 20 (drop 200 fib)) +main = traverse print (take 20 (drop 200 fib)) diff --git a/src/posts/0010-Haskell-Now/fib_lazy_trace.hs b/src/posts/0010-Haskell-Now/fib_lazy_trace.hs new file mode 100644 index 0000000..c0c4f4d --- /dev/null +++ b/src/posts/0010-Haskell-Now/fib_lazy_trace.hs @@ -0,0 +1,11 @@ +import Debug.Trace + +-- like + but each time this is evaluated print a trace +tracedPlus x y = trace ("> " ++ show x ++ " + " ++ show y) (x + y) + +fib :: [Integer] +fib = 1:1:zipWith tracedPlus fib (tail fib) + +main = do + print (fib !! 10) + print (fib !! 12) diff --git a/src/posts/0010-Haskell-Now/index.org b/src/posts/0010-Haskell-Now/index.org index 343cb49..234850c 100644 --- a/src/posts/0010-Haskell-Now/index.org +++ b/src/posts/0010-Haskell-Now/index.org @@ -6,6 +6,7 @@ #+keywords: Haskell, programming, functional, tutorial | #+DESCRIPTION: A very dense introduction and Haskell tutorial. Brace yourself. #+OPTIONS: auto-id:t toc:t +#+STARTUP: overview #+begin_notes A very short and intense introduction to Haskell. @@ -182,32 +183,32 @@ The article contains five parts: {{{lnk(shell.nix)}}} #+begin_src nix :tangle shell.nix - { nixpkgs ? import (fetchTarball https://github.com/NixOS/nixpkgs/archive/19.09.tar.gz) {} }: - let - inherit (nixpkgs) pkgs; - inherit (pkgs) haskellPackages; + { nixpkgs ? import (fetchTarball https://github.com/NixOS/nixpkgs/archive/19.09.tar.gz) {} }: + let + inherit (nixpkgs) pkgs; + inherit (pkgs) haskellPackages; - haskellDeps = ps: with ps; [ - base - protolude - containers - ]; + haskellDeps = ps: with ps; [ + base + protolude + containers + ]; - ghc = haskellPackages.ghcWithPackages haskellDeps; + ghc = haskellPackages.ghcWithPackages haskellDeps; - nixPackages = [ - ghc - pkgs.gdb - haskellPackages.cabal-install - ]; - in - pkgs.stdenv.mkDerivation { - name = "env"; - buildInputs = nixPackages; - shellHook = '' - export PS1="\n[hs:\033[1;32m\]\W\[\033[0m\]]> " - ''; - } + nixPackages = [ + ghc + pkgs.gdb + haskellPackages.cabal-install + ]; + in + pkgs.stdenv.mkDerivation { + name = "env"; + buildInputs = nixPackages; + shellHook = '' + export PS1="\n[hs:\033[1;32m\]\W\[\033[0m\]]> " + ''; + } #+end_src 4. In the =hsenv= directory, in a terminal, run =nix-shell=. @@ -280,7 +281,7 @@ Let's jump to the mandatory "Hello World". {{{lnk(hello.hs)}}} #+BEGIN_SRC haskell :tangle hello.hs - main = putStrLn "Hello World!" +main = putStrLn "Hello World!" #+END_SRC #+BEGIN_EXAMPLE @@ -405,45 +406,45 @@ You might be used to declaring functions like this: In =C=: #+BEGIN_SRC C - int f(int x, int y) { - return x*x + y*y; - } +int f(int x, int y) { + return x*x + y*y; +} #+END_SRC In JavaScript: #+BEGIN_SRC javascript - function f(x,y) { - return x*x + y*y; - } +function f(x,y) { + return x*x + y*y; +} #+END_SRC in Python: #+BEGIN_SRC python - def f(x,y): - return x*x + y*y +def f(x,y): + return x*x + y*y #+END_SRC in Ruby: #+BEGIN_SRC ruby - def f(x,y) - x*x + y*y - end +def f(x,y) + x*x + y*y +end #+END_SRC In Scheme: #+BEGIN_SRC scheme - (define (f x y) - (+ (* x x) (* y y))) +(define (f x y) + (+ (* x x) (* y y))) #+END_SRC Finally, the Haskell way is: #+BEGIN_SRC haskell - f x y = x*x + y*y +f x y = x*x + y*y #+END_SRC Very clean. No parenthesis, no =def=. @@ -468,10 +469,10 @@ We declare the type using =::= {{{lnk(basic.hs)}}} #+BEGIN_SRC haskell :tangle basic.hs - f :: Int -> Int -> Int - f x y = x*x + y*y +f :: Int -> Int -> Int +f x y = x*x + y*y - main = print (f 2 3) +main = print (f 2 3) #+END_SRC #+BEGIN_EXAMPLE @@ -483,10 +484,10 @@ Now try {{{lnk(error_basic.hs)}}} #+BEGIN_SRC haskell :tangle error_basic.hs - f :: Int -> Int -> Int - f x y = x*x + y*y +f :: Int -> Int -> Int +f x y = x*x + y*y - main = print (f 2.3 4.2) +main = print (f 2.3 4.2) #+END_SRC You should get this error: @@ -511,9 +512,9 @@ infer the most general type for us: {{{lnk(float_basic.hs)}}} #+BEGIN_SRC haskell :tangle float_basic.hs - f x y = x*x + y*y +f x y = x*x + y*y - main = print (f 2.3 4.2) +main = print (f 2.3 4.2) #+END_SRC #+begin_example @@ -529,23 +530,23 @@ For example, in =C=, you'll have to declare a function for =int=, for But, what type should we declare? To discover the type Haskell has found for us, just launch ghci: -#+BEGIN_SRC - % ghci - GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help - Loading package ghc-prim ... linking ... done. - Loading package integer-gmp ... linking ... done. - Loading package base ... linking ... done. - Loading package ffi-1.0 ... linking ... done. - Prelude> let f x y = x*x + y*y - Prelude> :type f - f :: Num a => a -> a -> a -#+END_SRC +#+BEGIN_EXAMPLE +% ghci +GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help +Loading package ghc-prim ... linking ... done. +Loading package integer-gmp ... linking ... done. +Loading package base ... linking ... done. +Loading package ffi-1.0 ... linking ... done. +Prelude> let f x y = x*x + y*y +Prelude> :type f +f :: Num a => a -> a -> a +#+END_EXAMPLE Uh? What is this strange type? -#+BEGIN_EXAMPLE +#+BEGIN_SRC haskell Num a => a -> a -> a -#+END_EXAMPLE +#+END_SRC First, let's focus on the right part =a -> a -> a=. To understand it, just look at a list of progressive examples: @@ -602,12 +603,12 @@ More precisely =f 3 4= is equivalent to =(f 3) 4=. Note =f 3= is a function: #+BEGIN_SRC haskell - f :: Num a => a -> a -> a +f :: Num a => a -> a -> a - g :: Num a => a -> a - g = f 3 +g :: Num a => a -> a +g = f 3 - g y ⇔ 3*3 + y*y +g y ⇔ 3*3 + y*y #+END_SRC Another notation exists for functions. @@ -631,10 +632,10 @@ expected: {{{lnk(typed_float_basic.hs)}}} #+BEGIN_SRC haskell :tangle typed_float_basic.hs - f :: Num a => a -> a -> a - f x y = x*x + y*y +f :: Num a => a -> a -> a +f x y = x*x + y*y - main = print (f 3 2.4) +main = print (f 3 2.4) #+END_SRC It works, because, =3= is a valid representation both for Fractional @@ -645,15 +646,15 @@ Fractional number. If we force our function to work with different types, it will fail: #+BEGIN_SRC haskell - f :: Num a => a -> a -> a - f x y = x*x + y*y +f :: Num a => a -> a -> a +f x y = x*x + y*y - x :: Int - x = 3 - y :: Float - y = 2.4 - -- won't work because type x ≠ type y - main = print (f x y) +x :: Int +x = 3 +y :: Float +y = 2.4 +-- won't work because type x ≠ type y +main = print (f x y) #+END_SRC The compiler complains. @@ -844,8 +845,8 @@ But it is considered a good practice to do so. /Infix notation/ #+BEGIN_SRC haskell :tangle functions.hs - square :: Num a => a -> a - square x = x^2 +square :: Num a => a -> a +square x = x^2 #+END_SRC Note =^= uses infix notation. @@ -853,30 +854,30 @@ For each infix operator there its associated prefix notation. You just have to put it inside parenthesis. #+BEGIN_SRC haskell :tangle functions.hs - square' x = (^) x 2 +square' x = (^) x 2 - square'' x = (^2) x +square'' x = (^2) x #+END_SRC We can remove =x= in the left and right side! It's called η-reduction. #+BEGIN_SRC haskell :tangle functions.hs - square''' = (^2) +square''' = (^2) #+END_SRC Note we can declare functions with ='= in their name. Here: #+BEGIN_QUOTE - =square= ⇔ =square'= ⇔ =square''= ⇔ =square'''= +=square= ⇔ =square'= ⇔ =square''= ⇔ =square'''= #+END_QUOTE Note for each prefix notation you can transform it to infix notation with =`= like this: #+begin_example - foo x y ↔ x `foo` y +foo x y ↔ x `foo` y #+end_example /Tests/ @@ -884,8 +885,8 @@ Note for each prefix notation you can transform it to infix notation with An implementation of the absolute function. #+BEGIN_SRC haskell :tangle functions.hs - absolute :: (Ord a, Num a) => a -> a - absolute x = if x >= 0 then x else -x +absolute :: (Ord a, Num a) => a -> a +absolute x = if x >= 0 then x else -x #+END_SRC Note: the =if .. then .. else= Haskell notation is more like the =¤?¤:¤= @@ -895,9 +896,9 @@ You cannot forget the =else=. Another equivalent version: #+BEGIN_SRC haskell :tangle functions.hs - absolute' x - | x >= 0 = x - | otherwise = -x +absolute' x + | x >= 0 = x + | otherwise = -x #+END_SRC #+BEGIN_QUOTE @@ -907,15 +908,15 @@ Like in Python, bad indentation can break your code! {{{lnk(functions.hs)}}} #+BEGIN_SRC haskell :tangle functions.hs - main = do - print $ square 10 - print $ square' 10 - print $ square'' 10 - print $ square''' 10 - print $ absolute 10 - print $ absolute (-10) - print $ absolute' 10 - print $ absolute' (-10) +main = do + print $ square 10 + print $ square' 10 + print $ square'' 10 + print $ square''' 10 + print $ absolute 10 + print $ absolute (-10) + print $ absolute' 10 + print $ absolute' (-10) #+END_SRC #+begin_example @@ -960,15 +961,15 @@ To show differences between functional and imperative approaches, I'll start by providing an imperative solution (in javascript): #+BEGIN_SRC javascript - function evenSum(list) { - var result = 0; - for (var i=0; i< list.length ; i++) { - if (list[i] % 2 ==0) { - result += list[i]; - } +function evenSum(list) { + var result = 0; + for (var i=0; i< list.length ; i++) { + if (list[i] % 2 ==0) { + result += list[i]; } - return result; } + return result; +} #+END_SRC In Haskell, by contrast, we don't have variables or a for loop. @@ -985,25 +986,25 @@ Note that for simplicity I assume the int list ends with the first =0= value. #+BEGIN_SRC C - int evenSum(int *list) { - return accumSum(0,list); - } +int evenSum(int *list) { + return accumSum(0,list); +} - int accumSum(int n, int *list) { - int x; - int *xs; - if (*list == 0) { // if the list is empty - return n; - } else { - x = list[0]; // let x be the first element of the list - xs = list+1; // let xs be the list without x - if ( 0 == (x%2) ) { // if x is even - return accumSum(n+x, xs); - } else { - return accumSum(n, xs); - } - } - } +int accumSum(int n, int *list) { + int x; + int *xs; + if (*list == 0) { // if the list is empty + return n; + } else { + x = list[0]; // let x be the first element of the list + xs = list+1; // let xs be the list without x + if ( 0 == (x%2) ) { // if x is even + return accumSum(n+x, xs); + } else { + return accumSum(n, xs); + } + } +} #+END_SRC Keep this code in mind. @@ -1012,34 +1013,34 @@ First, however, I need to introduce three simple but useful functions we will use: #+BEGIN_SRC haskell - even :: Integral a => a -> Bool - head :: [a] -> a - tail :: [a] -> [a] +even :: Integral a => a -> Bool +head :: [a] -> a +tail :: [a] -> [a] #+END_SRC =even= verifies if a number is even. #+BEGIN_SRC haskell - even :: Integral a => a -> Bool - even 3 ⇒ False - even 2 ⇒ True +even :: Integral a => a -> Bool +even 3 ⇒ False +even 2 ⇒ True #+END_SRC =head= returns the first element of a list: #+BEGIN_SRC haskell - head :: [a] -> a - head [1,2,3] ⇒ 1 - head [] ⇒ ERROR +head :: [a] -> a +head [1,2,3] ⇒ 1 +head [] ⇒ ERROR #+END_SRC =tail= returns all elements of a list, except the first: #+BEGIN_SRC haskell - tail :: [a] -> [a] - tail [1,2,3] ⇒ [2,3] - tail [3] ⇒ [] - tail [] ⇒ ERROR +tail :: [a] -> [a] +tail [1,2,3] ⇒ [2,3] +tail [3] ⇒ [] +tail [] ⇒ ERROR #+END_SRC Note that for any non empty list =l=, =l ⇔ (head l):(tail l)= @@ -1049,16 +1050,16 @@ The function =evenSum= returns the sum of all even numbers in a list: {{{lnk(evenSum_v1.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v1.hs - -- Version 1 - evenSum :: [Integer] -> Integer - evenSum l = accumSum 0 l - accumSum n l = if l == [] - then n - else let x = head l - xs = tail l - in if even x - then accumSum (n+x) xs - else accumSum n xs +-- Version 1 +evenSum :: [Integer] -> Integer +evenSum l = accumSum 0 l +accumSum n l = if l == [] + then n + else let x = head l + xs = tail l + in if even x + then accumSum (n+x) xs + else accumSum n xs #+END_SRC To test a function you can use =ghci=: @@ -1099,7 +1100,7 @@ In fact, many things can be improved here. First, we can generalize the type. #+BEGIN_SRC haskell - evenSum :: Integral a => [a] -> a +evenSum :: Integral a => [a] -> a #+END_SRC Next, we can use sub functions using =where= or =let=. @@ -1108,31 +1109,31 @@ module. {{{lnk(evenSum_v2.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v2.hs - -- Version 2 - evenSum :: Integral a => [a] -> a - evenSum l = accumSum 0 l - where accumSum n l = - if l == [] - then n - else let x = head l - xs = tail l - in if even x - then accumSum (n+x) xs - else accumSum n xs +-- Version 2 +evenSum :: Integral a => [a] -> a +evenSum l = accumSum 0 l + where accumSum n l = + if l == [] + then n + else let x = head l + xs = tail l + in if even x + then accumSum (n+x) xs + else accumSum n xs #+END_SRC Next, we can use pattern matching. {{{lnk(evenSum_v3.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v3.hs - -- Version 3 - evenSum l = accumSum 0 l - where - accumSum n [] = n - accumSum n (x:xs) = - if even x - then accumSum (n+x) xs - else accumSum n xs +-- Version 3 +evenSum l = accumSum 0 l + where + accumSum n [] = n + accumSum n (x:xs) = + if even x + then accumSum (n+x) xs + else accumSum n xs #+END_SRC What is pattern matching? @@ -1141,8 +1142,8 @@ Use values instead of general parameter names[fn:3]. Instead of saying: =foo l = if l == [] then else = you simply state: #+BEGIN_SRC haskell - foo [] = - foo l = +foo [] = +foo l = #+END_SRC But pattern matching goes even further. @@ -1150,19 +1151,19 @@ It is also able to inspect the inner data of a complex value. We can replace #+BEGIN_SRC haskell - foo l = let x = head l - xs = tail l - in if even x - then foo (n+x) xs - else foo n xs +foo l = let x = head l + xs = tail l + in if even x + then foo (n+x) xs + else foo n xs #+END_SRC with #+BEGIN_SRC haskell - foo (x:xs) = if even x - then foo (n+x) xs - else foo n xs +foo (x:xs) = if even x + then foo (n+x) xs + else foo n xs #+END_SRC This is a very useful feature. @@ -1172,28 +1173,28 @@ In Haskell you can simplify function definitions by η-reducing them. For example, instead of writing: #+BEGIN_SRC haskell - f x = (some expresion) x +f x = (some expresion) x #+END_SRC you can simply write #+BEGIN_SRC haskell - f = (some expression) +f = (some expression) #+END_SRC We use this method to remove the =l=: {{{lnk(evenSum_v4.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v4.hs - -- Version 4 - evenSum :: Integral a => [a] -> a - evenSum = accumSum 0 - where - accumSum n [] = n - accumSum n (x:xs) = - if even x - then accumSum (n+x) xs - else accumSum n xs +-- Version 4 +evenSum :: Integral a => [a] -> a +evenSum = accumSum 0 + where + accumSum n [] = n + accumSum n (x:xs) = + if even x + then accumSum (n+x) xs + else accumSum n xs #+END_SRC *** Higher Order Functions @@ -1211,26 +1212,26 @@ Higher order functions are functions taking functions as parameters. Here are some examples: #+BEGIN_SRC haskell - filter :: (a -> Bool) -> [a] -> [a] - map :: (a -> b) -> [a] -> [b] - foldl :: (a -> b -> a) -> a -> [b] -> a +filter :: (a -> Bool) -> [a] -> [a] +map :: (a -> b) -> [a] -> [b] +foldl :: (a -> b -> a) -> a -> [b] -> a #+END_SRC Let's proceed by small steps. {{{lnk(evenSum_v5.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v5.hs - -- Version 5 - evenSum l = mysum 0 (filter even l) - where - mysum n [] = n - mysum n (x:xs) = mysum (n+x) xs +-- Version 5 +evenSum l = mysum 0 (filter even l) + where + mysum n [] = n + mysum n (x:xs) = mysum (n+x) xs #+END_SRC where #+BEGIN_SRC haskell - filter even [1..10] ⇔ [2,4,6,8,10] +filter even [1..10] ⇔ [2,4,6,8,10] #+END_SRC The function =filter= takes a function of type (=a -> Bool=) and a list of @@ -1245,28 +1246,28 @@ the list. The function =foldl= captures a general coding pattern: #+BEGIN_SRC haskell - myfunc list = foo initialValue list - foo accumulated [] = accumulated - foo tmpValue (x:xs) = foo (bar tmpValue x) xs +myfunc list = foo initialValue list +foo accumulated [] = accumulated +foo tmpValue (x:xs) = foo (bar tmpValue x) xs #+END_SRC Which can be replaced by: #+BEGIN_SRC haskell - myfunc list = foldl bar initialValue list +myfunc list = foldl bar initialValue list #+END_SRC If you really want to know how the magic works, here is the definition of =foldl=: #+BEGIN_SRC haskell - foldl f z [] = z - foldl f z (x:xs) = foldl f (f z x) xs +foldl f z [] = z +foldl f z (x:xs) = foldl f (f z x) xs #+END_SRC #+BEGIN_SRC haskell - foldl f z [x1,...xn] - ⇔ f (... (f (f z x1) x2) ...) xn +foldl f z [x1,...xn] +⇔ f (... (f (f z x1) x2) ...) xn #+END_SRC But as Haskell is lazy, it doesn't evaluate =(f z x)= and simply pushes it @@ -1280,12 +1281,12 @@ Now our new version of =evenSum= becomes: {{{lnk(evenSum_v6.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v6.hs - -- Version 6 - -- foldl' isn't accessible by default - -- we need to import it from the module Data.List - import Data.List - evenSum l = foldl' mysum 0 (filter even l) - where mysum acc value = acc + value +-- Version 6 +-- foldl' isn't accessible by default +-- we need to import it from the module Data.List +import Data.List +evenSum l = foldl' mysum 0 (filter even l) + where mysum acc value = acc + value #+END_SRC We can also simplify this by using directly a lambda notation. @@ -1293,27 +1294,27 @@ This way we don't have to create the temporary name =mysum=. {{{lnk(evenSum_v7.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v7.hs - -- Version 7 - -- Generally it is considered a good practice - -- to import only the necessary function(s) - import Data.List (foldl') - evenSum l = foldl' (\x y -> x+y) 0 (filter even l) +-- Version 7 +-- Generally it is considered a good practice +-- to import only the necessary function(s) +import Data.List (foldl') +evenSum l = foldl' (\x y -> x+y) 0 (filter even l) #+END_SRC And of course, we note that #+BEGIN_SRC haskell - (\x y -> x+y) ⇔ (+) +(\x y -> x+y) ⇔ (+) #+END_SRC Finally {{{lnk(evenSum_v8.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v8.hs - -- Version 8 - import Data.List (foldl') - evenSum :: Integral a => [a] -> a - evenSum l = foldl' (+) 0 (filter even l) +-- Version 8 +import Data.List (foldl') +evenSum :: Integral a => [a] -> a +evenSum l = foldl' (+) 0 (filter even l) #+END_SRC =foldl'= isn't the easiest function to grasp. @@ -1323,43 +1324,43 @@ To help you understand what's going on here, let's look at a step by step evaluation: #+BEGIN_SRC haskell - evenSum [1,2,3,4] - ⇒ foldl' (+) 0 (filter even [1,2,3,4]) - ⇒ foldl' (+) 0 [2,4] - ⇒ foldl' (+) (0+2) [4] - ⇒ foldl' (+) 2 [4] - ⇒ foldl' (+) (2+4) [] - ⇒ foldl' (+) 6 [] - ⇒ 6 + evenSum [1,2,3,4] +⇒ foldl' (+) 0 (filter even [1,2,3,4]) +⇒ foldl' (+) 0 [2,4] +⇒ foldl' (+) (0+2) [4] +⇒ foldl' (+) 2 [4] +⇒ foldl' (+) (2+4) [] +⇒ foldl' (+) 6 [] +⇒ 6 #+END_SRC Another useful higher order function is =(.)=. The =(.)= function corresponds to mathematical composition. #+BEGIN_SRC haskell - (f . g . h) x ⇔ f ( g (h x)) +(f . g . h) x ⇔ f ( g (h x)) #+END_SRC We can take advantage of this operator to η-reduce our function: {{{lnk(evenSum_v9.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v9.hs - -- Version 9 - import Data.List (foldl') - evenSum :: Integral a => [a] -> a - evenSum = (foldl' (+) 0) . (filter even) +-- Version 9 +import Data.List (foldl') +evenSum :: Integral a => [a] -> a +evenSum = (foldl' (+) 0) . (filter even) #+END_SRC Also, we could rename some parts to make it clearer: {{{lnk(evenSum_v10.hs)}}} #+BEGIN_SRC haskell :tangle evenSum_v10.hs - -- Version 10 - import Data.List (foldl') - sum' :: (Num a) => [a] -> a - sum' = foldl' (+) 0 - evenSum :: Integral a => [a] -> a - evenSum = sum' . (filter even) +-- Version 10 +import Data.List (foldl') +sum' :: (Num a) => [a] -> a +sum' = foldl' (+) 0 +evenSum :: Integral a => [a] -> a +evenSum = sum' . (filter even) #+END_SRC It is time to discuss the direction our code has moved as we introduced @@ -1378,8 +1379,8 @@ sum of all even squares of elements of the list. Updating version 10 is extremely easy: #+BEGIN_SRC haskell - squareEvenSum = sum' . (filter even) . (map (^2)) - squareEvenSum' = evenSum . (map (^2)) +squareEvenSum = sum' . (filter even) . (map (^2)) +squareEvenSum' = evenSum . (map (^2)) #+END_SRC We just had to add another "transformation function". @@ -1467,7 +1468,7 @@ Haskell's saving grace is that it can /infer/ types. Here is a simple example, the =square= function in Haskell: #+BEGIN_SRC haskell - square x = x * x +square x = x * x #+END_SRC This function can =square= any Numeral type. @@ -1493,15 +1494,15 @@ Prelude Data.Complex> square (2 :+ 1) Now compare with the amount of code necessary in C: #+BEGIN_SRC C - int int_square(int x) { return x*x; } - float float_square(float x) {return x*x; } - complex complex_square (complex z) { - complex tmp; - tmp.real = z.real * z.real - z.img * z.img; - tmp.img = 2 * z.img * z.real; - } - complex x,y; - y = complex_square(x); +int int_square(int x) { return x*x; } +float float_square(float x) {return x*x; } +complex complex_square (complex z) { + complex tmp; + tmp.real = z.real * z.real - z.img * z.img; + tmp.img = 2 * z.img * z.real; +} +complex x,y; +y = complex_square(x); #+END_SRC For each type, you need to write a new function. @@ -1561,24 +1562,24 @@ First, you can use aliases or type synonyms. {{{lnk(type_constr_1.hs)}}} #+BEGIN_SRC haskell :tangle type_constr_1.hs - type Name = String - type Color = String +type Name = String +type Color = String - showInfos :: Name -> Color -> String - showInfos name color = "Name: " ++ name - ++ ", Color: " ++ color - name :: Name - name = "Robin" - color :: Color - color = "Blue" - main = putStrLn $ showInfos name color +showInfos :: Name -> Color -> String +showInfos name color = "Name: " ++ name + ++ ", Color: " ++ color +name :: Name +name = "Robin" +color :: Color +color = "Blue" +main = putStrLn $ showInfos name color #+END_SRC But it doesn't protect you much. Try to swap the two parameter of =showInfos= and run the program: #+BEGIN_SRC haskell - putStrLn $ showInfos color name +putStrLn $ showInfos color name #+END_SRC It will compile and execute. @@ -1588,16 +1589,16 @@ The compiler will treat them as completely identical. Another method is to create your own types using the keyword =data=. #+BEGIN_SRC haskell - data Name = NameConstr String - data Color = ColorConstr String +data Name = NameConstr String +data Color = ColorConstr String - showInfos :: Name -> Color -> String - showInfos (NameConstr name) (ColorConstr color) = - "Name: " ++ name ++ ", Color: " ++ color +showInfos :: Name -> Color -> String +showInfos (NameConstr name) (ColorConstr color) = + "Name: " ++ name ++ ", Color: " ++ color - name = NameConstr "Robin" - color = ColorConstr "Blue" - main = putStrLn $ showInfos name color +name = NameConstr "Robin" +color = ColorConstr "Blue" +main = putStrLn $ showInfos name color #+END_SRC Now if you switch parameters of =showInfos=, the compiler complains! @@ -1607,16 +1608,16 @@ is to be a bit more verbose. Also notice that constructors are functions: #+BEGIN_SRC haskell - NameConstr :: String -> Name - ColorConstr :: String -> Color +NameConstr :: String -> Name +ColorConstr :: String -> Color #+END_SRC The syntax of =data= is mainly: #+BEGIN_SRC haskell - data TypeName = ConstructorName [types] - | ConstructorName2 [types] - | ... +data TypeName = ConstructorName [types] + | ConstructorName2 [types] + | ... #+END_SRC Generally the usage is to use the same name for the DataTypeName and @@ -1625,17 +1626,17 @@ DataTypeConstructor. Example: #+BEGIN_SRC haskell - data Complex a = Num a => Complex a a +data Complex a = Num a => Complex a a #+END_SRC Also you can use the record syntax: #+BEGIN_SRC haskell - data DataTypeName = DataConstructor { - field1 :: [type of field1] - , field2 :: [type of field2] - ... - , fieldn :: [type of fieldn] } +data DataTypeName = DataConstructor { + field1 :: [type of field1] + , field2 :: [type of field2] + ... + , fieldn :: [type of fieldn] } #+END_SRC And many accessors are made for you. @@ -1644,11 +1645,11 @@ Furthermore you can use another order when setting values. Example: #+BEGIN_SRC haskell - data Complex a = Num a => Complex { real :: a, img :: a} - c = Complex 1.0 2.0 - z = Complex { real = 3, img = 4 } - real c ⇒ 1.0 - img z ⇒ 4 +data Complex a = Num a => Complex { real :: a, img :: a} +c = Complex 1.0 2.0 +z = Complex { real = 3, img = 4 } +real c ⇒ 1.0 +img z ⇒ 4 #+END_SRC *** Recursive type @@ -1660,15 +1661,15 @@ You already encountered a recursive type: lists. You can re-create lists, but with a more verbose syntax: #+BEGIN_SRC haskell - data List a = Empty | Cons a (List a) +data List a = Empty | Cons a (List a) #+END_SRC If you really want to use an easier syntax you can use an infix name for constructors. #+BEGIN_SRC haskell - infixr 5 ::: - data List a = Nil | a ::: (List a) +infixr 5 ::: +data List a = Nil | a ::: (List a) #+END_SRC The number after =infixr= gives the precedence. @@ -1678,9 +1679,9 @@ If you want to be able to print (=Show=), read (=Read=), test equality derive the appropriate functions for you. #+BEGIN_SRC haskell :tangle list.hs - infixr 5 ::: - data List a = Nil | a ::: (List a) - deriving (Show,Read,Eq,Ord) +infixr 5 ::: +data List a = Nil | a ::: (List a) + deriving (Show,Read,Eq,Ord) #+END_SRC When you add =deriving (Show)= to your data declaration, Haskell creates a @@ -1688,14 +1689,14 @@ When you add =deriving (Show)= to your data declaration, Haskell creates a We'll see soon how you can use your own =show= function. #+BEGIN_SRC haskell :tangle list.hs - convertList [] = Nil - convertList (x:xs) = x ::: convertList xs +convertList [] = Nil +convertList (x:xs) = x ::: convertList xs #+END_SRC #+BEGIN_SRC haskell :tangle list.hs - main = do - print (0 ::: 1 ::: Nil) - print (convertList [0,1]) +main = do + print (0 ::: 1 ::: Nil) + print (convertList [0,1]) #+END_SRC This prints: @@ -1716,19 +1717,19 @@ This prints: We'll just give another standard example: binary trees. #+BEGIN_SRC haskell :tangle tree.hs - data BinTree a = Empty - | Node a (BinTree a) (BinTree a) - deriving (Show) +data BinTree a = Empty + | Node a (BinTree a) (BinTree a) + deriving (Show) #+END_SRC We will also create a function which turns a list into an ordered binary tree. #+BEGIN_SRC haskell :tangle tree.hs - treeFromList :: (Ord a) => [a] -> BinTree a - treeFromList [] = Empty - treeFromList (x:xs) = Node x (treeFromList (filter (x) xs)) +treeFromList :: (Ord a) => [a] -> BinTree a +treeFromList [] = Empty +treeFromList (x:xs) = Node x (treeFromList (filter (x) xs)) #+END_SRC Look at how elegant this function is. In plain English: @@ -1743,7 +1744,7 @@ Look at how elegant this function is. In plain English: which are strictly superior to =x=. #+BEGIN_SRC haskell :tangle tree.hs - main = print $ treeFromList [7,2,4,8] +main = print $ treeFromList [7,2,4,8] #+END_SRC You should obtain the following: @@ -1884,15 +1885,15 @@ reduce the inner =(b*c)= For example in Haskell you can do: #+BEGIN_SRC haskell - -- numbers = [1,2,..] - numbers :: [Integer] - numbers = 0:map (1+) numbers +-- numbers = [1,2,..] +numbers :: [Integer] +numbers = 0:map (1+) numbers - take' n [] = [] - take' 0 l = [] - take' n (x:xs) = x:take' (n-1) xs +take' n [] = [] +take' 0 l = [] +take' n (x:xs) = x:take' (n-1) xs - main = print $ take' 10 numbers +main = print $ take' 10 numbers #+END_SRC And it stops. @@ -1912,23 +1913,18 @@ Also, note in Haskell there is a notation for infinite lists and most functions will work with them. Also, there is a built-in function =take= which is equivalent to our =take'=. -This code is mostly the same as the previous one. +*** Infinite Trees +:PROPERTIES: +:CUSTOM_ID: infinite-trees +:END: #+begin_src haskell :tangle infinite_tree.hs :exports none import Data.Tree (Tree,Forest(..)) import qualified Data.Tree as Tree -#+end_src - - -#+BEGIN_SRC haskell :tangle infinite_tree.hs data BinTree a = Empty | Node a (BinTree a) (BinTree a) deriving (Eq,Ord,Show) -#+END_SRC - - -#+begin_src haskell :tangle infinite_tree.hs :exports none -- | Function to transform our internal BinTree type to the -- type of Tree declared in Data.Tree (from containers package) @@ -1941,7 +1937,6 @@ This code is mostly the same as the previous one. -- | Function that given a BinTree print a representation of it in the console prettyPrintTree :: (Show a) => BinTree a -> IO () prettyPrintTree = putStrLn . Tree.drawForest . binTreeToForestString - #+end_src @@ -1949,7 +1944,7 @@ Suppose we don't mind having an ordered binary tree. Here is an infinite binary tree: #+BEGIN_SRC haskell :tangle infinite_tree.hs - nullTree = Node 0 nullTree nullTree +nullTree = Node 0 nullTree nullTree #+END_SRC A complete binary tree where each node is equal to 0. @@ -1957,22 +1952,22 @@ Now I will prove you can manipulate this object using the following function: #+BEGIN_SRC haskell :tangle infinite_tree.hs - -- take all element of a BinTree - -- up to some depth - treeTakeDepth _ Empty = Empty - treeTakeDepth 0 _ = Empty - treeTakeDepth n (Node x left right) = let - nl = treeTakeDepth (n-1) left - nr = treeTakeDepth (n-1) right - in - Node x nl nr +-- take all element of a BinTree +-- up to some depth +treeTakeDepth _ Empty = Empty +treeTakeDepth 0 _ = Empty +treeTakeDepth n (Node x left right) = let + nl = treeTakeDepth (n-1) left + nr = treeTakeDepth (n-1) right + in + Node x nl nr #+END_SRC See what occurs for this program: {{{lnk(infinite_tree.hs)}}} #+BEGIN_SRC haskell :tangle infinite_tree.hs - main = prettyPrintTree (treeTakeDepth 4 nullTree) +main = prettyPrintTree (treeTakeDepth 4 nullTree) #+END_SRC This code compiles, runs and stops giving the following result: @@ -2047,10 +2042,10 @@ interesting tree: #+BEGIN_SRC haskell :tangle infinite_tree_2.hs - iTree = Node 0 (dec iTree) (inc iTree) - where - dec (Node x l r) = Node (x-1) (dec l) (dec r) - inc (Node x l r) = Node (x+1) (inc l) (inc r) +iTree = Node 0 (dec iTree) (inc iTree) + where + dec (Node x l r) = Node (x-1) (dec l) (dec r) + inc (Node x l r) = Node (x+1) (inc l) (inc r) #+END_SRC Another way to create this tree is to use a higher order function. @@ -2059,12 +2054,12 @@ instead of list. Here is such a function: #+BEGIN_SRC haskell :tangle infinite_tree_2.hs - -- apply a function to each node of Tree - treeMap :: (a -> b) -> BinTree a -> BinTree b - treeMap f Empty = Empty - treeMap f (Node x left right) = Node (f x) - (treeMap f left) - (treeMap f right) +-- apply a function to each node of Tree +treeMap :: (a -> b) -> BinTree a -> BinTree b +treeMap f Empty = Empty +treeMap f (Node x left right) = Node (f x) + (treeMap f left) + (treeMap f right) #+END_SRC /Hint/: I won't talk more about this here. @@ -2074,16 +2069,16 @@ structures, search for functor and =fmap=. Our definition is now: #+BEGIN_SRC haskell :tangle infinite_tree_2.hs - infTreeTwo :: BinTree Int - infTreeTwo = Node 0 (treeMap (\x -> x-1) infTreeTwo) - (treeMap (\x -> x+1) infTreeTwo) +infTreeTwo :: BinTree Int +infTreeTwo = Node 0 (treeMap (\x -> x-1) infTreeTwo) + (treeMap (\x -> x+1) infTreeTwo) #+END_SRC Look at the result for {{{lnk(infinite_tree_2.hs)}}} #+BEGIN_SRC haskell :tangle infinite_tree_2.hs - main = prettyPrintTree $ treeTakeDepth 4 infTreeTwo +main = prettyPrintTree $ treeTakeDepth 4 infTreeTwo #+END_SRC #+BEGIN_EXAMPLE @@ -2119,7 +2114,11 @@ Look at the result for `- 3 #+END_EXAMPLE -#+begin_notes +*** Fibonnacci infinite list +:PROPERTIES: +:CUSTOM_ID: fibonnacci-infinite-list +:END: + The important things to remember. Haskell handle infinite structures naturally mostly because it is not strict. @@ -2130,19 +2129,17 @@ like this common example: fib :: [Integer] fib = 1:1:zipWith (+) fib (tail fib) -main = traverse_ print (take 20 (drop 200 fib)) +main = traverse print (take 20 (drop 200 fib)) #+end_src Many new details in this small code. Don't worry if you do not get all details: - =fib= is a list of Integer, not a function -- =(!!)= is used to get the nth element of a list. - =drop n= remove n element of a list - =take n= keep the first n elements of a list - =zipWith op [a1,a2,a3,...] [b1,b2,b3,...]= will generate the list =[op a1 b1,op a2 b2,op a3 b3, .... ]= -- =traverse_= is like map but for performing effects (in this case print) - and discarding any result if any. +- =traverse= is like map but for performing effects (in this case print) This progam print all fibonnacci numbers from 201 to 221 instantaneously. Because, =fib= is a list that will be used as "cache" to compute each @@ -2176,7 +2173,49 @@ user 0m0.192s sys 0m0.058s #+end_example -#+end_notes +Let's see how this work using =Debug.Trace=: + +{{{lnk(fib_lazy_trace.hs)}}} +#+begin_src haskell :tangle fib_lazy_trace.hs +import Debug.Trace + +-- like + but each time this is evaluated print a trace +tracedPlus x y = trace ("> " ++ show x ++ " + " ++ show y) (x + y) + +fib :: [Integer] +fib = 1:1:zipWith tracedPlus fib (tail fib) + +main = do + print (fib !! 10) + print (fib !! 12) +#+end_src + +#+begin_example +[hs:hsenv]> runghc fib_lazy_trace.hs +> 1 + 1 +> 1 + 2 +> 2 + 3 +> 3 + 5 +> 5 + 8 +> 8 + 13 +> 13 + 21 +> 21 + 34 +> 34 + 55 +89 +> 55 + 89 +> 89 + 144 +233 +#+end_example + +Notice how, once computed, the list is kept in memory. +This is why when the second time we ask for the 12th element of fib we only +perform two more additions. +This is both a blessing and a curse. +A blessing if you know when to use this as in this example. +And a curse as if do not take care about lazyness it will come back at you +with memory leaks. + +After a bit of experience, most Haskellers can avoid memory leaks naturally. * Difficulty: Hard :PROPERTIES: @@ -2213,29 +2252,29 @@ But they are all very rewarding. A typical function doing =IO= looks a lot like an imperative program: #+BEGIN_SRC haskell - f :: IO a - f = do - x <- action1 - action2 x - y <- action3 - action4 x y - #+END_SRC +f :: IO a +f = do + x <- action1 + action2 x + y <- action3 + action4 x y +#+END_SRC - - To set a value to an object we use =<-= . - - The type of each line is =IO *=; in this example: +- To set a value to an object we use =<-= . +- The type of each line is =IO *=; in this example: - #+begin_src haskell - - action1 :: IO b - - x :: b - - action2 x :: IO () - - action3 :: IO c - - y :: c - - action4 x y :: IO a - #+end_src + #+begin_src haskell + - action1 :: IO b + - x :: b + - action2 x :: IO () + - action3 :: IO c + - y :: c + - action4 x y :: IO a + #+end_src - - Few objects have the type =IO a=, this should help you choose. In - particular you cannot use pure functions directly here. To use pure - functions you could do =action2 (purefunction x)= for example. +- Few objects have the type =IO a=, this should help you choose. In + particular you cannot use pure functions directly here. To use pure + functions you could do =action2 (purefunction x)= for example. #+END_QUOTE In this section, I will explain how to use IO, not how it works. @@ -2254,13 +2293,13 @@ Print the sum of the numbers. {{{lnk(io_sum.hs)}}} #+BEGIN_SRC haskell :tangle io_sum.hs - toList :: String -> [Integer] - toList input = read ("[" ++ input ++ "]") +toList :: String -> [Integer] +toList input = read ("[" ++ input ++ "]") - main = do - putStrLn "Enter a list of numbers (separated by comma):" - input <- getLine - print $ sum (toList input) +main = do + putStrLn "Enter a list of numbers (separated by comma):" + input <- getLine + print $ sum (toList input) #+END_SRC It should be straightforward to understand the behavior of this program. @@ -2276,10 +2315,10 @@ Or more interestingly, we note that each expression in the =do= block has a type of =IO a=. #+BEGIN_SRC haskell - main = do - putStrLn "Enter ... " :: IO () - getLine :: IO String - print Something :: IO () +main = do + putStrLn "Enter ... " :: IO () + getLine :: IO String + print Something :: IO () #+END_SRC We should also pay attention to the effect of the =<-= symbol. @@ -2295,16 +2334,16 @@ Another important note about using =IO=: all lines in a do block must be of one of the two forms: #+BEGIN_SRC haskell - action1 :: IO a - -- in this case, generally a = () + action1 :: IO a + -- in this case, generally a = () #+END_SRC or #+BEGIN_SRC haskell - value <- action2 -- where - -- action2 :: IO b - -- value :: b + value <- action2 -- where + -- action2 :: IO b + -- value :: b #+END_SRC These two kinds of line will correspond to two different ways of sequencing @@ -2333,7 +2372,8 @@ Here is one way to do this: use the type =Maybe=. This is a very common type in Haskell. #+BEGIN_SRC haskell :tangle io_sum_safe.hs - import Data.Maybe +import Data.Maybe +import Text.Read (readMaybe) #+END_SRC What is this thing? @@ -2341,45 +2381,36 @@ What is this thing? Its definition is: #+BEGIN_SRC haskell - data Maybe a = Nothing | Just a +data Maybe a = Nothing | Just a #+END_SRC This is a nice way to tell there was an error while trying to create/compute a value. -The =maybeRead= function is a great example of this. +The =readMaybe= function is a great example of this. This is a function similar to the function =read=[fn:4], but if something goes wrong the returned value is =Nothing=. If the value is right, it returns =Just =. -Don't try to understand too much of this function. -I use a lower level function than =read=: =reads=. - -#+BEGIN_SRC haskell :tangle io_sum_safe.hs - maybeRead :: Read a => String -> Maybe a - maybeRead s = case reads s of - [(x,"")] -> Just x - _ -> Nothing -#+END_SRC Now to be a bit more readable, we define a function which goes like this: If the string has the wrong format, it will return =Nothing=. Otherwise, for example for "1,2,3", it will return =Just [1,2,3]=. #+BEGIN_SRC haskell :tangle io_sum_safe.hs - getListFromString :: String -> Maybe [Integer] - getListFromString str = maybeRead $ "[" ++ str ++ "]" +getListFromString :: String -> Maybe [Integer] +getListFromString str = readMaybe $ "[" ++ str ++ "]" #+END_SRC We simply have to test the value in our main function. #+BEGIN_SRC haskell :tangle io_sum_safe.hs - main :: IO () - main = do - putStrLn "Enter a list of numbers (separated by comma):" - input <- getLine - let maybeList = getListFromString input in - case maybeList of - Just l -> print (sum l) - Nothing -> putStrLn "Bad format. Good Bye." +main :: IO () +main = do + putStrLn "Enter a list of numbers (separated by comma):" + input <- getLine + let maybeList = getListFromString input + case maybeList of + Just l -> print (sum l) + Nothing -> putStrLn "Bad format. Good Bye." #+END_SRC In case of error, we display a nice error message. @@ -2411,29 +2442,26 @@ enters a valid answer. We keep the first part: -#+BEGIN_SRC haskell - import Data.Maybe +#+BEGIN_SRC haskell :tangle io_sum_ask.hs +import Data.Maybe +import Text.Read (readMaybe) - maybeRead :: Read a => String -> Maybe a - maybeRead s = case reads s of - [(x,"")] -> Just x - _ -> Nothing - getListFromString :: String -> Maybe [Integer] - getListFromString str = maybeRead $ "[" ++ str ++ "]" +getListFromString :: String -> Maybe [Integer] +getListFromString str = readMaybe $ "[" ++ str ++ "]" #+END_SRC Now we create a function which will ask the user for an list of integers until the input is right. -#+BEGIN_SRC haskell - askUser :: IO [Integer] - askUser = do - putStrLn "Enter a list of numbers (separated by comma):" - input <- getLine - let maybeList = getListFromString input in - case maybeList of - Just l -> return l - Nothing -> askUser +#+BEGIN_SRC haskell :tangle io_sum_ask.hs +askUser :: IO [Integer] +askUser = do + putStrLn "Enter a list of numbers (separated by comma):" + input <- getLine + let maybeList = getListFromString input + case maybeList of + Just l -> return l + Nothing -> askUser #+END_SRC This function is of type =IO [Integer]=. @@ -2442,7 +2470,7 @@ some IO actions. Some people might explain while waving their hands: #+BEGIN_QUOTE - «This is an =[Integer]= inside an =IO=» + «This is an =[Integer]= inside an =IO=.» #+END_QUOTE If you want to understand the details behind all of this, you'll have to @@ -2452,11 +2480,11 @@ remember to think about the type. Finally our main function is much simpler: -#+BEGIN_SRC haskell - main :: IO () - main = do - list <- askUser - print $ sum list +#+BEGIN_SRC haskell :tangle io_sum_ask.hs +main :: IO () +main = do + list <- askUser + print $ sum list #+END_SRC We have finished with our introduction to =IO=. @@ -2474,10 +2502,10 @@ Here are the main things to remember: If you practice a bit, you should be able to /use/ =IO=. #+BEGIN_QUOTE - /Exercises/: +/Exercises/: - - Make a program that sums all of its arguments. Hint: use the - function =getArgs=. +- Make a program that sums all of its arguments. Hint: use the + function =getArgs=. #+END_QUOTE ** IO trick explained @@ -2489,46 +2517,46 @@ If you practice a bit, you should be able to /use/ =IO=. [[./magritte_pipe.jpg]] #+BEGIN_QUOTE - Here is a %tldr for this section. +{{{tldr}}} - To separate pure and impure parts, =main= is defined as a function - which modifies the state of the world. +To separate pure and impure parts, =main= is defined as a function which +modifies the state of the world. - #+BEGIN_EXAMPLE - main :: World -> World - #+END_EXAMPLE +#+BEGIN_EXAMPLE +main :: World -> World +#+END_EXAMPLE - A function is guaranteed to have side effects only if it has this - type. But look at a typical main function: +A function is guaranteed to have side effects only if it has this type. +But look at a typical main function: - #+BEGIN_EXAMPLE - main w0 = - let (v1,w1) = action1 w0 in - let (v2,w2) = action2 v1 w1 in - let (v3,w3) = action3 v2 w2 in - action4 v3 w3 - #+END_EXAMPLE +#+BEGIN_SRC haskell +main w0 = + let (v1,w1) = action1 w0 in + let (v2,w2) = action2 v1 w1 in + let (v3,w3) = action3 v2 w2 in + action4 v3 w3 +#+END_SRC - We have a lot of temporary elements (here =w1=, =w2= and =w3=) which - must be passed on to the next action. +We have a lot of temporary elements (here =w1=, =w2= and =w3=) which must +be passed on to the next action. - We create a function =bind= or =(>>=)=. With =bind= we don't need - temporary names anymore. +We create a function =bind= or ~(>>=)~. +With =bind= we don't need temporary names anymore. - #+BEGIN_EXAMPLE - main = - action1 >>= action2 >>= action3 >>= action4 - #+END_EXAMPLE +#+BEGIN_SRC haskell +main = + action1 >>= action2 >>= action3 >>= action4 +#+END_SRC - Bonus: Haskell has syntactical sugar for us: +Bonus: Haskell has syntactical sugar for us: - #+BEGIN_EXAMPLE - main = do - v1 <- action1 - v2 <- action2 v1 - v3 <- action3 v2 - action4 v3 - #+END_EXAMPLE +#+BEGIN_SRC haskell +main = do + v1 <- action1 + v2 <- action2 v1 + v3 <- action3 v2 + action4 v3 +#+END_SRC #+END_QUOTE Why did we use this strange syntax, and what exactly is this =IO= type? @@ -2538,19 +2566,19 @@ For now let's just forget all about the pure parts of our program, and focus on the impure parts: #+BEGIN_SRC haskell - askUser :: IO [Integer] - askUser = do - putStrLn "Enter a list of numbers (separated by commas):" - input <- getLine - let maybeList = getListFromString input in - case maybeList of - Just l -> return l - Nothing -> askUser +askUser :: IO [Integer] +askUser = do + putStrLn "Enter a list of numbers (separated by commas):" + input <- getLine + let maybeList = getListFromString input + case maybeList of + Just l -> return l + Nothing -> askUser - main :: IO () - main = do - list <- askUser - print $ sum list +main :: IO () +main = do + list <- askUser + print $ sum list #+END_SRC First remark: this looks imperative. @@ -2575,7 +2603,7 @@ Rather, it is /explicitly/ said that =main= is a function that Its type is then something like: #+BEGIN_SRC haskell - main :: World -> World +main :: World -> World #+END_SRC Not all functions may access this variable. @@ -2586,7 +2614,7 @@ Haskell considers the state of the world as an input variable to =main=. But the real type of main is closer to this one[fn:6]: #+BEGIN_SRC haskell - main :: World -> ((),World) +main :: World -> ((),World) #+END_SRC The =()= type is the unit type. Nothing to see here. @@ -2594,17 +2622,17 @@ The =()= type is the unit type. Nothing to see here. Now let's rewrite our main function with this in mind: #+BEGIN_SRC haskell - main w0 = - let (list,w1) = askUser w0 in - let (x,w2) = print (sum list,w1) in - x +main w0 = + let (list,w1) = askUser w0 in + let (x,w2) = print (sum list,w1) in + x #+END_SRC First, we note that all functions which have side effects must have the type: #+BEGIN_SRC haskell - World -> (a,World) +World -> (a,World) #+END_SRC where =a= is the type of the result. @@ -2636,33 +2664,33 @@ Now, if you look at the style of the main function, it is clearly awkward. Let's try to do the same to the =askUser= function: #+BEGIN_SRC haskell - askUser :: World -> ([Integer],World) +askUser :: World -> ([Integer],World) #+END_SRC Before: #+BEGIN_SRC haskell - askUser :: IO [Integer] - askUser = do - putStrLn "Enter a list of numbers:" - input <- getLine - let maybeList = getListFromString input in - case maybeList of - Just l -> return l - Nothing -> askUser +askUser :: IO [Integer] +askUser = do + putStrLn "Enter a list of numbers:" + input <- getLine + let maybeList = getListFromString input in + case maybeList of + Just l -> return l + Nothing -> askUser #+END_SRC After: #+BEGIN_SRC haskell - askUser w0 = - let (_,w1) = putStrLn "Enter a list of numbers:" in - let (input,w2) = getLine w1 in - let (l,w3) = case getListFromString input of - Just l -> (l,w2) - Nothing -> askUser w2 - in - (l,w3) +askUser w0 = + let (_,w1) = putStrLn "Enter a list of numbers:" in + let (input,w2) = getLine w1 in + let (l,w3) = case getListFromString input of + Just l -> (l,w2) + Nothing -> askUser w2 + in + (l,w3) #+END_SRC This is similar, but awkward. Look at all these temporary =w?= names. @@ -2683,7 +2711,7 @@ The output type is a couple, =(answer, newWorldValue)=. Each function =f= must have a type similar to: #+BEGIN_SRC haskell - f :: World -> (a,World) +f :: World -> (a,World) #+END_SRC Not only this, but we can also note that we always follow the same usage @@ -2712,23 +2740,23 @@ For example, we could also have: With, of course: =actionN w :: (World) -> (a,World)=. #+BEGIN_QUOTE - IMPORTANT: there are only two important patterns to consider: +*IMPORTANT*: there are only two important patterns to consider: - #+BEGIN_SRC haskell - let (x,w1) = action1 w0 in - let (y,w2) = action2 x w1 in - #+END_SRC +#+BEGIN_SRC haskell + let (x,w1) = action1 w0 in + let (y,w2) = action2 x w1 in +#+END_SRC - and +and - #+BEGIN_SRC haskell - let (_,w1) = action1 w0 in - let (y,w2) = action2 w1 in - #+END_SRC +#+BEGIN_SRC haskell + let (_,w1) = action1 w0 in + let (y,w2) = action2 w1 in +#+END_SRC #+END_QUOTE -#+CAPTION: Jocker pencil trick -[[./jocker_pencil_trick.jpg]] +#+CAPTION: Slave Market with the disappearing bust of Voltaire +[[./slave-market-with-the-disappearing-bust-of-voltaire.jpg]] Now, we will do a magic trick. We will make the temporary world symbols "disappear". @@ -3612,10 +3640,37 @@ Thank you man. shouldn't see such use in a real application except maybe for debugging purposes. -[fn:6] For the curious ones, the real type is +[fn:6] For the curious ones, the real type looks like =data IO a = IO {unIO :: State# RealWorld -> (# State# RealWorld, a #)}=. - All the =#= has to do with optimisation and I swapped the fields - in my example. But this is the basic idea. + All the =#= has to do with optimisation. + I swapped the fields in my example. + But this is the basic idea. + As of today, the definition of =IO= is no more visible into =base=. + We have the following explanation in [[http://hackage.haskell.org/package/base-4.12.0.0/docs/src/GHC.IO.html][=GHC.IO.hs=]]: + #+begin_quote + #+begin_src + The IO Monad is just an instance of the ST monad, where the state is + the real world. We use the exception mechanism (in GHC.Exception) to + implement IO exceptions. + + NOTE: The IO representation is deeply wired in to various parts of the + system. The following list may or may not be exhaustive: + + Compiler - types of various primitives in PrimOp.hs + + RTS - forceIO (StgStartup.cmm) + - catchzh_fast, (un)?blockAsyncExceptionszh_fast, raisezh_fast + (Exception.cmm) + - raiseAsync (RaiseAsync.c) + + Prelude - GHC.IO.hs, and several other places including + GHC.Exception.hs. + + Libraries - parts of hslibs/lang. + + --SDM + #+end_src + #+end_quote [fn:7] Well, you'll certainly need to practice a bit to get used to them and to understand when you can use them and create your own. But diff --git a/src/posts/0010-Haskell-Now/infinite_tree.hs b/src/posts/0010-Haskell-Now/infinite_tree.hs index aa42d00..3798917 100644 --- a/src/posts/0010-Haskell-Now/infinite_tree.hs +++ b/src/posts/0010-Haskell-Now/infinite_tree.hs @@ -1,21 +1,21 @@ -import Data.Tree (Tree,Forest(..)) -import qualified Data.Tree as Tree + import Data.Tree (Tree,Forest(..)) + import qualified Data.Tree as Tree -data BinTree a = Empty - | Node a (BinTree a) (BinTree a) - deriving (Eq,Ord,Show) + data BinTree a = Empty + | Node a (BinTree a) (BinTree a) + deriving (Eq,Ord,Show) --- | Function to transform our internal BinTree type to the --- type of Tree declared in Data.Tree (from containers package) --- so that the function Tree.drawForest can use -binTreeToForestString :: (Show a) => BinTree a -> Forest String -binTreeToForestString Empty = [] -binTreeToForestString (Node x left right) = - [Tree.Node (show x) ((binTreeToForestString left) ++ (binTreeToForestString right))] + -- | Function to transform our internal BinTree type to the + -- type of Tree declared in Data.Tree (from containers package) + -- so that the function Tree.drawForest can use + binTreeToForestString :: (Show a) => BinTree a -> Forest String + binTreeToForestString Empty = [] + binTreeToForestString (Node x left right) = + [Tree.Node (show x) ((binTreeToForestString left) ++ (binTreeToForestString right))] --- | Function that given a BinTree print a representation of it in the console -prettyPrintTree :: (Show a) => BinTree a -> IO () -prettyPrintTree = putStrLn . Tree.drawForest . binTreeToForestString + -- | Function that given a BinTree print a representation of it in the console + prettyPrintTree :: (Show a) => BinTree a -> IO () + prettyPrintTree = putStrLn . Tree.drawForest . binTreeToForestString nullTree = Node 0 nullTree nullTree diff --git a/src/posts/0010-Haskell-Now/infinite_tree_2.hs b/src/posts/0010-Haskell-Now/infinite_tree_2.hs index 30aefc3..ba6a8a6 100644 --- a/src/posts/0010-Haskell-Now/infinite_tree_2.hs +++ b/src/posts/0010-Haskell-Now/infinite_tree_2.hs @@ -1,30 +1,30 @@ -import Data.Tree (Tree,Forest(..)) -import qualified Data.Tree as Tree + import Data.Tree (Tree,Forest(..)) + import qualified Data.Tree as Tree -data BinTree a = Empty - | Node a (BinTree a) (BinTree a) - deriving (Eq,Ord,Show) + data BinTree a = Empty + | Node a (BinTree a) (BinTree a) + deriving (Eq,Ord,Show) --- | Function to transform our internal BinTree type to the --- type of Tree declared in Data.Tree (from containers package) --- so that the function Tree.drawForest can use -binTreeToForestString :: (Show a) => BinTree a -> Forest String -binTreeToForestString Empty = [] -binTreeToForestString (Node x left right) = - [Tree.Node (show x) ((binTreeToForestString left) ++ (binTreeToForestString right))] + -- | Function to transform our internal BinTree type to the + -- type of Tree declared in Data.Tree (from containers package) + -- so that the function Tree.drawForest can use + binTreeToForestString :: (Show a) => BinTree a -> Forest String + binTreeToForestString Empty = [] + binTreeToForestString (Node x left right) = + [Tree.Node (show x) ((binTreeToForestString left) ++ (binTreeToForestString right))] --- | Function that given a BinTree print a representation of it in the console -prettyPrintTree :: (Show a) => BinTree a -> IO () -prettyPrintTree = putStrLn . Tree.drawForest . binTreeToForestString + -- | Function that given a BinTree print a representation of it in the console + prettyPrintTree :: (Show a) => BinTree a -> IO () + prettyPrintTree = putStrLn . Tree.drawForest . binTreeToForestString --- | take all element of a BinTree up to some depth -treeTakeDepth _ Empty = Empty -treeTakeDepth 0 _ = Empty -treeTakeDepth n (Node x left right) = let - nl = treeTakeDepth (n-1) left - nr = treeTakeDepth (n-1) right - in - Node x nl nr + -- | take all element of a BinTree up to some depth + treeTakeDepth _ Empty = Empty + treeTakeDepth 0 _ = Empty + treeTakeDepth n (Node x left right) = let + nl = treeTakeDepth (n-1) left + nr = treeTakeDepth (n-1) right + in + Node x nl nr iTree = Node 0 (dec iTree) (inc iTree) where diff --git a/src/posts/0010-Haskell-Now/io_sum_ask.hs b/src/posts/0010-Haskell-Now/io_sum_ask.hs new file mode 100644 index 0000000..5c141f2 --- /dev/null +++ b/src/posts/0010-Haskell-Now/io_sum_ask.hs @@ -0,0 +1,19 @@ +import Data.Maybe +import Text.Read (readMaybe) + +getListFromString :: String -> Maybe [Integer] +getListFromString str = readMaybe $ "[" ++ str ++ "]" + +askUser :: IO [Integer] +askUser = do + putStrLn "Enter a list of numbers (separated by comma):" + input <- getLine + let maybeList = getListFromString input + case maybeList of + Just l -> return l + Nothing -> askUser + +main :: IO () +main = do + list <- askUser + print $ sum list diff --git a/src/posts/0010-Haskell-Now/io_sum_safe.hs b/src/posts/0010-Haskell-Now/io_sum_safe.hs index eb4eb4c..4a86a39 100644 --- a/src/posts/0010-Haskell-Now/io_sum_safe.hs +++ b/src/posts/0010-Haskell-Now/io_sum_safe.hs @@ -1,18 +1,14 @@ import Data.Maybe - -maybeRead :: Read a => String -> Maybe a -maybeRead s = case reads s of - [(x,"")] -> Just x - _ -> Nothing +import Text.Read (readMaybe) getListFromString :: String -> Maybe [Integer] -getListFromString str = maybeRead $ "[" ++ str ++ "]" +getListFromString str = readMaybe $ "[" ++ str ++ "]" main :: IO () main = do putStrLn "Enter a list of numbers (separated by comma):" input <- getLine - let maybeList = getListFromString input in - case maybeList of - Just l -> print (sum l) - Nothing -> putStrLn "Bad format. Good Bye." + let maybeList = getListFromString input + case maybeList of + Just l -> print (sum l) + Nothing -> putStrLn "Bad format. Good Bye." diff --git a/src/posts/0010-Haskell-Now/shell.nix b/src/posts/0010-Haskell-Now/shell.nix index f5d8732..9918136 100644 --- a/src/posts/0010-Haskell-Now/shell.nix +++ b/src/posts/0010-Haskell-Now/shell.nix @@ -1,25 +1,26 @@ -{ nixpkgs ? import (fetchTarball https://github.com/NixOS/nixpkgs/archive/19.09.tar.gz) {} }: -let - inherit (nixpkgs) pkgs; - inherit (pkgs) haskellPackages; + { nixpkgs ? import (fetchTarball https://github.com/NixOS/nixpkgs/archive/19.09.tar.gz) {} }: + let + inherit (nixpkgs) pkgs; + inherit (pkgs) haskellPackages; - haskellDeps = ps: with ps; [ - base - protolude - ]; + haskellDeps = ps: with ps; [ + base + protolude + containers + ]; - ghc = haskellPackages.ghcWithPackages haskellDeps; + ghc = haskellPackages.ghcWithPackages haskellDeps; - nixPackages = [ - ghc - pkgs.gdb - haskellPackages.cabal-install - ]; -in -pkgs.stdenv.mkDerivation { - name = "env"; - buildInputs = nixPackages; - shellHook = '' - export PS1="\n[hs:\033[1;32m\]\W\[\033[0m\]]> " - ''; -} + nixPackages = [ + ghc + pkgs.gdb + haskellPackages.cabal-install + ]; + in + pkgs.stdenv.mkDerivation { + name = "env"; + buildInputs = nixPackages; + shellHook = '' + export PS1="\n[hs:\033[1;32m\]\W\[\033[0m\]]> " + ''; + } diff --git a/src/posts/0010-Haskell-Now/slave-market-with-the-disappearing-bust-of-voltaire.jpg b/src/posts/0010-Haskell-Now/slave-market-with-the-disappearing-bust-of-voltaire.jpg new file mode 100644 index 0000000000000000000000000000000000000000..506870dda4e4cd00b9166e5ad0d36b2e062301f8 GIT binary patch literal 144521 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ξq^7w zY()_7lFjjs!CYLCk9@A{o(TIIXCF|a&2ln zYb+8+Om4Bg&3JMUp7`VI5(oj><0vHF+71Q`NK5|!eV=#);1hd)8vK1>w9$4AFROw+ zM``|W$~Am(Lp!LS3c{$ut7v}*M1z6 z&?p{oE6}@FUwE6MaREn1FdqEklr(7U-UU>i*8(~Rc*!j^j-2Bh(0pU2hWK1KDX#j% zk|8BC*x(@q(8Wtqe({8=>FVX}8>z}- z18T6UA6Nl}ntz;WL?il_1ghCN=NL#J=gaRMpcGp-@qwd3rn|u&38LMYrBLv%7=hH< z8{b&~i5)~RI4Wt;x5iSWvEbhO!~oTtM;0s%99}WlIp~a?nzas1kM)aasMWYm?AXt< zBSlCE{{Xq?E=}B09b!d^?QseNq2#!73tXe82vB)#KJkG_sBwr!7vu@nTA*(T*Tzs1 z^VnC%#sLsR@Xg!+F%ZxcTHp$=LEHC&glbb=_kb$P&SY}dN_V{XF$H$t&I&2y#anpe z7GjM^E03G2Dz7ij7Nm<@B=OdBwWCpK)(wrZz#_O&4G50pU*j4;DY_*l8%8j8Ie5ja zBC}7k1_G$iv!~qSIh`QwPxFKgQ%9FbK27nQ1yUo)^??XoCqwK0>&8fIMvulwfITANI1wEqHQGKmC?IvY3eh z9kzk^a3m_{hvNm8N^j-w5`Z2;=8+V0N<;X`s$V0Z$59>7@s+Ix!8pZ*W}Zu%lc+`F z8DP-+hB1ZZdFEoZN0yE2_{xI7paIwMm9opRvEw!r4IP}RKt&D)ASf;o=QXs~!fO<$ zU4d=?09ZLq4+(;pna&cfz<6ejxL!Aai_^g~NYE}o{Y(ow-6;IrWfYCr&{Yx~gx~8} zM2!u0^ZX(8l&GfNu&V`KOi|2N4{mJNW5Z@JNYacuU_b$Ecm&#Y!~J9>PosFy=r)REyG7ldal9GOQden;G*FAaZsK%YV+<*La0cyZ17;9I zN5c*gW#MXGGLQu5y2NuB)HDV_pdfXcH~=Gk`N{>F_#2pjBth?8;Rc5gu0zPab%_d~ zfiN#QxDj|aecW4JD(@gtBJIvF+vZEGStvUjFlY_vD&>J;`3`8oPPm^KGEwEgoDl=8 zU?olA?AuSyD_&lUf&v1s8%vB@+Fn!N#v+!ipvhz^D&5#-gaPPbMBi!gm+cpNYH^S_ zL&AnECaC`abLq+0N>3vVg3-GlUyK0YEH?~BgWqW6eLP~2fap_xJJuE`(hI5YQyLl& z>~p}5MgIUfz@mmenL7bCJoCmVfkuak)*T2hU9iIr@u!x5rs4sPv@W4B3TPa*?ZXNO zLn&Lf+nFTN>{6Ko56M2TO{6BcnKp^2UbA+jJTrKz@9|1uAhsY7yuZHR1V9{Za^SjJmqwSA(C_cG6ayB z#FMZ4jylSeke-eO(_ks5{{V1A3X@}uYNA(=x8o$6I!?Xf4iQjMal!?7Xy)Q+A#&oV zvFjiLyKkIlsHdBZ22>W{q*GMDBSE6#nG0@nhhLWlZY}l}>-UEh1impqF<9;=x4dk{ zAK<_$a&!kRK=Af35bQ38Zbb;16Zdhefv=121d}TwH^s(@pm)wXQm2=A&=6kdIEI)# zfzEjl1a{-|n+a8N@x5Zb4Q26)LP5VD7#9Uj{#PI+f_LuZw*)w?x|bLRS67T=7)n`B ztTbgDrnjt>iA5v1k?QfmJvgA*5CyyQfD=S^Z#f~T@Fc@jY=f~p;;63FyZFEmt^KlS zZR?m~@P*~(aj(`X5{*{8@tQgS;NtG(lmL;ttWq@xdL}^`05n6NyrUgZ^&B+

7o- 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 literal 0 HcmV?d00001