Explanation for function composition and infix function application(PureScript) -


this code works

findname :: string -> string -> addressbook -> boolean   findname fname lname =  not <<<  null <<< filter findn         findn :: entry -> boolean      findn entry = entry.firstname == fname && entry.lastname == lname 

but not

findname fname lname book =  not <<<  null <<< filter findn book 

again code works

findname fname lname book= not $  null $ filter findn book 

and not

findname fname lname = not null $ filter findn 

in short, because these different examples equivalent different placements of parentheses, code evaluated differently. f <<< g, f , g functions, equivalent \x -> f (g x), whereas f x $ g y equivalent (f x) (g y). whenever have infix symbol <<< , no other infix symbols, expressions left , right of symbol evaluated first, first example evaluated

findname fname lname = ((not) <<< (null) <<< (filter findn)),

which book parameter made explicit

findname fname lname book = ((not) <<< (null) <<< (filter findn)) book,

whereas second example evaluated

findname fname lname book = (not) <<< (null) <<< (filter findn book).

filter findn book yields list, <<< requires function arguments. third , fourth example problem similar: if make book parameter explicit in 4th example,

findname fname lname = (not $ null (filter findn)) book, (where forgot 1 $).

not $ null $ ... requires ... addressbook, filter findn function, not addressbook.


Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -