Коды ниже выглядят совершенно ясно:
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)
выглядят загадочными здесь...
Есть ли у кого-нибудь идеи об этом?