[Haskell-cafe] Applicative of Applicative
M Farkas-Dyck
strake888 at gmail.com
Tue Mar 24 05:59:45 UTC 2015
The composition of any 2 Applicatives is itself an applicative functor. So we have
liftA2 (<*>) :: (Applicative p, Applicative q) => p (q (a -> b)) -> p (q a) -> p (q b)
On 23/03/2015 at 22:02:41 +0100, martin wrote:
> But a Temporal Temporal Int can always be flattened into a Temporal Int.
This is simply join, so it's also a Monad. I assume (pure = return) would make its argument time-invariant.
> So I may just as well ask to apply a function to the bottom level, namely the Ints.
>
> How to I choose how deep down I want to reach?
Consider what semantics you want. Not knowing the semantics of Temporal and join :: Temporal (Temporal a) -> Temporal a, I can't say for sure, but changing TV channels seems to me a good example of Temporal (Temporal Image), for each channel is a Temporal Image and which is shown itself varies temporally.
Analogously, if I have _ :: [[a]], I can fmap (fmap (_ :: a -> b)) :: [[a]] -> [[b]], fmap (_ :: [a] -> [b]) :: [a] -> [b], or fmap (_ :: a -> b) ∘ join :: [[a]] -> [b] it; which I do is a function of the semantics I want.
Hope this helps ☺
More information about the Haskell-Cafe
mailing list