summaryrefslogtreecommitdiff
path: root/Haskell-book/22/WarmingUp.hs
blob: b8dd1944a5750215b8cd9ea707b82a732f6e8789 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module WarmingUp where

import Data.Char

cap :: [Char] -> [Char]
cap xs = map toUpper xs

rev :: [Char] -> [Char]
rev xs = reverse xs

composed :: [Char] -> [Char]
composed = cap . rev

fmapped :: [Char] -> [Char]
fmapped = fmap cap rev

tupled :: [Char] -> ([Char], [Char])
tupled = (,) <$> composed <*> fmapped

tupled' :: [Char] -> ([Char], [Char])
tupled' = composed >>= (\x -> fmapped >>= (\y -> return (x, y)))