В Хаскеле действительно ли типы с более высоким родом * действительно * являются типами? Или они просто обозначают коллекции * конкретных * типов и ничего более?

Параметрически полиморфные функции

Рассмотрим следующую функцию:

f :: a -> Int
f x = (1 :: Int)

Можно сказать, что типf являетсяa -> Intи этоf следовательно, имеет «полиморфный» тип.

Что из следующего является наиболее точным способом думать оf?

Существует на самом делене замужем f типаa -> Int, Однако его можно использовать какf :: Int -> Intкакf :: Double -> Int, и так далее.

В буквальном смысле, типf не являетсяa -> Int, На самом деле, это просто краткий способ сказать, что естьсемья функцийf чей тип является конкретным (то есть, естьf :: Int -> Int,f :: Double -> Double, и так далее; кроме того, каждая из этих функций отличается друг от друга).

Высшие родовые типы

Точно так же мы можем рассмотреть следующее объявление типа:

data Maybe a = Just a | Nothing

И спросите, какое из двух представлений правильнее:

Здесь нетне замужем типMaybe; действительно, существует просто семейство конкретных типов (Maybe Int, Maybe Stringи т. д.) и ничего более.

Естьпо факту один типMaybe, Этот тип является типом с более высоким родом. Когда мы говорим, что это «тип», мы подразумеваем его буквально (не как сокращение для (1)). Так получилось, что мы тоже можем написатьMaybe Int, Maybe Doubleи так далее, чтобы генерироватьотчетливый типы (которые оказываются конкретными). Но, в конце дня (то есть):Maybe, Maybe Int, а такжеMaybe String обозначатьтри различные типы, два из которых являются бетонными, а один - более родственным.

Резюме вопросов

В Хаскеле действительно ли типы с более высоким родом действительно являются типами? Или только конкретные типы являются «реальными типами», и когда мы говорим о «типах с более высоким родом», мы просто обозначаемсемья бетонных типов. Более того, обозначают ли парамометрически полиморфные функции функцииодин типили онипросто обозначатьколлекция функцииконкретные типы (и больше ничего)?

Ответы на вопрос(2)

Ваш ответ на вопрос