мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| haskell [23/09/2018 19:19] – [3.1 Полезные базовые функции для работы со списками] Владимир Власов | haskell [05/09/2024 19:52] (текущий) – Владимир Власов | ||
|---|---|---|---|
| Строка 25: | Строка 25: | ||
| - [[http:// | - [[http:// | ||
| - [[http:// | - [[http:// | ||
| - | - [[http://dev.by/blogs/ | + | - [[https://events.dev.by/lenta/ |
| - [[http:// | - [[http:// | ||
| - [[https:// | - [[https:// | ||
| - [[http:// | - [[http:// | ||
| - [[http:// | - [[http:// | ||
| + | - [[https:// | ||
| - | < | ||
| - | <!-- http:// | ||
| - | </ | ||
| ===== Урок 1. Знакомство с интерпретатором ghci ===== | ===== Урок 1. Знакомство с интерпретатором ghci ===== | ||
| Строка 79: | Строка 77: | ||
| Для просмотра тех или иных значений функции '' | Для просмотра тех или иных значений функции '' | ||
| + | |||
| + | Дополнительно отметим, | ||
| Строка 454: | Строка 454: | ||
| (везде ниже '' | (везде ниже '' | ||
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| * '' | * '' | ||
| - | * '' | + | * '' |
| ==== 3.2 Добавление к списку === | ==== 3.2 Добавление к списку === | ||
| Строка 615: | Строка 615: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| - | * ''< | + | * ''< |
| * '' | * '' | ||
| * '' | * '' | ||
| Строка 720: | Строка 720: | ||
| </ | </ | ||
| + | |||
| + | Более детально об импорте модулей можно прочитать тут: [[https:// | ||
| ==== 4.2 Экспорт модулей ==== | ==== 4.2 Экспорт модулей ==== | ||
| Строка 1067: | Строка 1069: | ||
| (<>) :: MyAlg -> MyAlg -> MyAlg | (<>) :: MyAlg -> MyAlg -> MyAlg | ||
| O <> x = x | O <> x = x | ||
| - | n <>x = next (prev n <> x) | + | n <> x = next (prev n <> x) |
| (><) :: MyAlg -> MyAlg -> MyAlg | (><) :: MyAlg -> MyAlg -> MyAlg | ||
| Строка 1177: | Строка 1179: | ||
| - | **Задание.** Создать собственный класс Logic с операциями &&&, | + | **Задание.** Создать собственный класс Logic с операциями |
| Формально класс описывается следующим образом: | Формально класс описывается следующим образом: | ||
| Строка 1198: | Строка 1200: | ||
| <code haskell> | <code haskell> | ||
| - | infixl 7 (&&& | + | infixl 7 &&& |
| - | infixl 5 (|||) | + | infixl 5 ||| |
| </ | </ | ||
| Строка 1274: | Строка 1276: | ||
| </ | </ | ||
| - | Этот код уже не слишком тривиален (что видно по обилию " | + | Этот код уже не слишком тривиален (что видно по обилию " |
| Заметим, | Заметим, | ||
| Строка 1294: | Строка 1296: | ||
| </ | </ | ||
| - | Для многострочных программ нам необходимо использовать ключевой слово < | + | Для многострочных программ нам необходимо использовать ключевое слово < |
| Вот как осуществляется получение аргументов командной строки в самом простом случае: | Вот как осуществляется получение аргументов командной строки в самом простом случае: | ||
| Строка 1334: | Строка 1336: | ||
| ==== Урок 6.2 Взаимодействие с STDIN-STDOUT ==== | ==== Урок 6.2 Взаимодействие с STDIN-STDOUT ==== | ||
| - | Список базовых функций ввода-вывода может быть найден тут: [[http://www.haskell.org/ | + | Список базовых функций ввода-вывода может быть найден тут: [[https://downloads.haskell.org/ |
| или на русском языке тут: | или на русском языке тут: | ||
| [[http:// | [[http:// | ||
| Строка 1545: | Строка 1547: | ||
| writeFile " | writeFile " | ||
| </ | </ | ||
| - | Здесь " | + | Здесь " |
| Работа с " | Работа с " | ||
| Строка 1552: | Строка 1554: | ||
| ==== 6.6 Запуск и компиляция ==== | ==== 6.6 Запуск и компиляция ==== | ||
| - | Запуск подготовленных указанным выше способом возможен разными путями. | + | Запуск подготовленных указанным выше способом |
| Во-первых, | Во-первых, | ||
| Строка 1592: | Строка 1594: | ||
| <code haskell> | <code haskell> | ||
| - | data Maybe a = Nothing | Just a | + | data Maybe a = Nothing | Just a deriving (Eq, Ord) |
| </ | </ | ||
| (Напомним, | (Напомним, | ||
| Строка 1602: | Строка 1604: | ||
| </ | </ | ||
| - | Полиморфные типы похожи на контейнеры, | + | Полиморфные типы похожи на контейнеры, |
| Теперь, | Теперь, | ||
| Строка 2605: | Строка 2607: | ||
| то не распозналось.. Если элементы во входном списке еще остались, | то не распозналось.. Если элементы во входном списке еще остались, | ||
| - | Ниже применяем полученные функции для создания парсера | + | Ниже применяем полученные функции для создания парсера |
| <code haskell> | <code haskell> | ||
| parse teststr = if (mss == " | parse teststr = if (mss == " | ||