## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# How to do it...

1. Create a new project list-as-monad using the simple Stack template.
2. Open src/Main.hs and edit it.
1. Write a function that takes an integer x and returns a list of all integers starting with  x ([x, x+1, x+2,...]):
nexts :: Num a => a -> [a]
nexts x = do
x : nexts (x+1)
1. Write a function that takes two lists and returns all ordered pairs from this list:
pairs :: [a] -> [b] -> [(a,b)]
pairs xs ys = do
x <- xs
y <- ys
return (x,y)
1. Write a partitioning function using list comprehension. The same function is also written using the monadic syntax:
partition :: (a -> b -> Bool) -> [a] -> [b] -> [(a,b)] partition f xs ys = [ (x, y) | x <- xs, y <- ys, f x y] partition1 ...

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required