Произнесите такой код:
fun :: (a -> b) -> [a] -> [b]
fun f as = someLogic as
where someLogic :: [a] -> [b]
someLogic xs = map f xs
Последняя строка будет жаловаться компилятору, что тип a
для "f
" не совпадает с типом a
для "someLogic
".
Итак, что я мог сделать, чтобы сообщить компилятору, что оба типа a
- это одно и то же?
ScopedTypeVariables
- это то, что нужно Google. Я вернусь и добавлю правильный ответ, когда я не буду разговаривать по телефону, если к тому времени кто-то еще не ответил. - person Ben   schedule 14.04.2019someLogic :: [a] -> [b]
, если она вам действительно не нужна. и в этом простом коде он вам не нужен. - person Will Ness   schedule 14.04.2019