52700.fb2 Учебник по Haskell - читать онлайн бесплатно полную версию книги . Страница 21

Учебник по Haskell - читать онлайн бесплатно полную версию книги . Страница 21

• Составления сложного типа из подтипов, пишем конструктор первым, затем через пробел подтипы:

data Type = Name

Sub1

Sub2

...

SubN

Эту операцию называют произведением типов.

Есть одно исключение: если тип состоит из двух подтипов, мы можем дать конструктору символьное

(а не буквенное) имя, но оно должно начинаться с двоеточия :, как в случае списка, например, можно

делать такие определения типов:

data Type = Sub1 :+ Sub2

data Type = Sub1 :| Sub2

• Комбинации суммы и произведения типов:

data Type = Name1

Sub11

Sub12

...

Sub1N

| Name2

Sub21

Sub22

...

Sub2M

...

| NameK

SubK1

SubK2

...

SubKP

Такие типы называют алгебраическими типами данных. С помощью типов мы определяем основные поня-

тия и способы их комбинирования.

Значения

Как это ни странно, нам встретилась лишь одна операция создания значений: определение синонима. Она

пишется так

name x1

x2 ... xN = Expr1

name x1

x2 ... xN = Expr2

name x1

x2 ... xN = Expr3

Слева от знака равно стоит составное имя, а справа от знака равно некоторое выражение, построенное

согласно типам. Разные комбинации имени name с параметрами определяют разные уравнения для синонима

name.

Также мы видели символ _, который означает “всё, что угодно” на месте аргумента. А также мы увидели,

как с помощью переменных можно перетаскивать значения из аргументов в результат.

Ядро Haskell | 21

Классы типов

Нам встретилась одна конструкция определения классов типов:

class Name a where

method1 :: a -> ...