Я написал следующую (тривиальную) функцию:
h c = [f x | x <- a, f <- b, (a, b) <- c]
Я ожидал, что это будет desugared как:
h c = do (a, b) <- c
f <- b
x <- a
return (f x)
В свою очередь, desugared (игнорируя fail
материал) как:
h c = c >>= \(a, b) -> b >>= \f -> a >>= \x -> return (f x)
Однако GHCi возвращает ошибку:
<interactive>:24:17: error: Variable not in scope: a :: [a1]
<interactive>:20:27: error:
Variable not in scope: b :: [t0 -> b1]
Это кажется бессмысленным, поскольку a
и b
действительно находятся в области видимости.