Коды ниже выглядят совершенно ясно:
do
x <- Just 3
y <- Just "!"
Just (show x ++ y)
Здесь тип x равен Num, а y - String. (<- здесь используется для получения фактического значения из Monad)
Однако этот сниппет выглядит не так ясно для меня:
import Control.Monad.Instances
addStuff :: Int -> Int
addStuff = do
a <- (* 2)
b <- (+ 10)
return (a + b)
Каков тип a и тип b здесь? Кажется, они действуют как Num, но a <- (* 2) и b <- (+ 10) выглядят загадочными здесь...
Есть ли у кого-нибудь идеи об этом?