Slide 20
Slide 20 text
How’d that work again?
• Let the types guide you -
mk3Tuple :: a -> (b -> (c -> (a,b,c)))
<$> :: (u -> v) -> Concurrently u -> Concurrently v
(mk3Tuple <$>) :: Concurrently a -> Concurrently (b -> (c -> (a,b,c)))
getFoo :: Concurrently Foo
(mk3Tuple <$> getFoo) :: Concurrently (b -> (c -> (Foo,b,c)))
(<*> getBar) :: Concurrently (Bar -> b) -> Concurrently Bar -> Concurrently b
(mk3Tuple <$> getFoo <*> getBar) :: Concurrently (c -> (Foo,Bar,c))
(mk3Tuple <$> getFoo <*> getBar <*> getBaz) :: Concurrently (Foo,Bar,Baz)