Hello, I have such a question: assume you have some type `T` which has Applicative and Monad instances. Is it ok if code like this:
foo :: Int -> T String
bar :: Int -> T Int
(,) <$> foo 10 <*> bar "20"
behaves not like this code:
foobar = do
x <- foo 10
y <- bar "20"
return (x, y)
The word "behaves" I mean not just returning value but the effect performed also.