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

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

’+’

it :: Char

Для обозначения перехода на новую строку используется специальный символ \n. Если строка слишком

длинная и не помещается на одной строке, то её можно перенести так:

str = ”My long long long long \

\long long string”

Перенос осуществляется с помощью комбинации следующих друг за другом обратных слэшей.

Нам понадобится функция конкатенации списков (++), она определена в Prelude, с её помощью мы будем

объединять строки:

Prelude> :t (++)

(++) :: [a] -> [a] -> [a]

Prelude> ”Hello” ++ [’ ’] ++ ”World”

”Hello World”

it :: [Char]

Пример: Отображение дат и времени

Приведём, пример в котором отображаемое значение не совпадает с видом значения в коде. Мы отобра-

зим значения из мира календаря. Для начала давайте сохраним определения в отдельном модуле:

module Calendar where

import Prelude (Int, Char, String, Show(.. ), (++))

-- Дата

Класс Show. Строки и символы | 29

data Date = Date Year Month Day

-- Год

data Year

= Year Int

-- Int это целые числа

-- Месяц

data Month

= January

| February

| March

| April

| May

| June

| July

| August

| September

| October

| November | December

data Day = Day Int

-- Неделя

data Week

= Monday

| Tuesday

| Wednesday

| Thursday

| Friday

| Saturday

| Sunday

-- Время