Here's a selection of point-free style/program calculation exercises I came up with for cse130. Enjoy!

*With thanks to @taktoa*

Give solutions to the following in *points-free* style.

*(from 1HaskellADay)*Given:

`parseNum :: String -> Maybe (Float, String)`

Define:

`dropNum :: String -> Maybe String`

in terms of`parseNum`

Define a function

`applys :: a -> [a -> b] -> [b]`

that applies a value to a list of functions.Define a function

`wordCount :: [String] -> [(String, Int)]`

that, given a list of words, returns an association list with the number of occurrences of each unique word.- Define the function
`histogram :: FilePath -> IO ()`

that reads a file, computes the`wordCount`

of the contents, and draws a histogram to the screen. Assume the function`printCount :: String -> Int -> IO ()`

.

- Define the function
Given the

`List`

datatype and`foldr`

on cons-lists,`data List a = Nil | Cons a (List a) foldr :: (a -> b -> b) -> b -> List a -> b foldr f b Nil = b foldr f b (Cons x xs) = f x (foldr f b xs)`

define its counterpart

`foldl`

over snoc-lists of type`Tisl`

`data Tisl a = Lin | Snoc (Tisl a) a foldl :: (a -> b -> a) -> a -> Tisl b -> a`

- Must the step function for
`foldr`

have the type`a -> b -> b`

for both`List`

and`Tisl`

? What about the type of the step function for`foldl`

? Give an explanation based on the structure of cons and snoc lists and the shape of the recursion.

- Must the step function for

- Prove that
`foldl`

is the natural fold for snoc-lists.