November 2015
Intermediate to advanced
166 pages
3h 14m
English
Let's find our way towards arrows from the perspective of monads. Consider the following IO code:
import System.IO
main = do
main = liftM (length . words)
(readFile "jabberwocky.txt" )
>>= print
-- regular functions: length, words
-- Monadic functions: readFile, printWe use liftM to lift the composed function length . words into the monadic function readFile and then feed the result to another monadic function, print.
We can compose the regular functions with (.), but we know well that we cannot do the following:
print . length . words . readFile "jabberwocky.txt" -- INVALID - types don't align
Let's make the preceding code possible!
The following code is based on a combination of Programming with Arrows by John Hughes, and a blog post ...
Read now
Unlock full access