Я знаком с декларацией ньютайпов:Новый тип объявления функций?
newtype MyAge = Age {age :: Int} deriving (Show, Eq, Ord)
В этом случае Возраст является Int, однако я наткнулся ниже код, и я не могу понять:
newtype Ages a = Ages {age :: String -> [(a,String)]}
Кажется, это объявление функции? (принимает строку, возвращает список кортежей, содержащих 'a' и строку) - это правильно?
N.B Я только что понял, что это просто базовый синтаксис записи, чтобы объявить функцию.
Кроме, я пытался реализовать этот тип, но я должен делать что-то неправильно:
newtype Example a = Example {ex :: Int -> Int}
myexample = Example {ex = (\x -> x + 1)}
Это компилирует, но я не понимаю, почему я не прошло " a 'параметр?
Не добавляйте новые вопросы к существующей почте. Тем не менее, пример «a» является примером использования [фантомного типа] (https://wiki.haskell.org/Phantom_type). – chepner