Tôi đang đọc qua LYAH, và trong Chương 9, tôi đã tìm thấy một vấn đề tò mò. Tác giả cung cấp ví dụ về việc triển khai chức năng "randoms": randoms' :: (RandomGen g, Random a) => g -> [a]
randoms' gen
Ví dụ, ParsecT có nhiều biến kiểu trong định nghĩa của nó. newtype ParsecT s u m a
= ParsecT {unParser :: forall b .
State s u
-> (a -> State s u -> ParseError -> m b)
->
Khi sử dụng GHC thông dịch viên tương tác, nó có thể yêu cầu loại suy ra của một biểu thức: Prelude> :t map
map :: (a -> b) -> [a] -> [b]
Dường như phải mất tên của các biến kiểu từ chữ ký kể từ ma