Size: a a a

2020 December 06

IR

IC Rainbow in Haskell
Vadim Shadrin
Да уж, без бутылки не разберешься
для чистых выражений:
  let foo = 2 + 4
значит, что выражения слева и справа от = взаимозаменяемы

для процедур с эффектами:
 result <- doSomething
значит, что после выполенения doSomething, результат (чистый) далее будет доступен по имени result
источник

VS

Vadim Shadrin in Haskell
Ну примерно, понятно. Осталось потренироваться, чтобы руки запомнили
источник

AL

Anton Latukha in Haskell
+====

Шеймлес плаг:

GitHub CI action для проектов Haskell, которое выполняет интеграционный тест Nixpkgs

Автоматически проверяет совместимость между проектом и репозиторием Nixpkgs. Позволяет команде, которая создает выпуск проекта, заблаговременно узнать, совместим ли проект с Nixpkgs как есть, или для проекта требуются overrides в файле NixOS/nixpkgs: pkgs/development/haskell-modules/configuration-common.nix .

https://github.com/marketplace/actions/automatic-haskell-project-integration-test-to-nixpkgs

Подробности интеграции Nixpkgs Haskell (насколько я их знаю):
 * Инфраструктура Nixpkgs Haskell имеет полуавтоматическую интеграцию пакетов Hackage.
   * Пакеты, совместимость которых покрывается Stackage LTS - обновления версий происходят автоматически каждую полночь.
   * Обновления пакетов Hackage, особенно важные / хрупкие обновления пакетов и все запросы на мерж происходят в ветке haskell-updates. Процесс управляется командой, обновления объединяются вместе с важными обновлениями и тестируются по пятницам во время прямых трансляций, которые заканчиваются мержем в основную ветку.
 * Дизайн Nixpkgs декларирует 1 версию пакетов которая используется для сборок по умолчанию. Как ожидается от такой системы, эти версии по умолчанию иногда несовместимы с зависимостями проекта, который имеет диапазоны, и поэтому - деривация требует корректировок, - и это то, что это действие автоматически проверяет и результат сообщает заранее.

Естественно особенно рекомендую использовать для тех кто озабочен или хочет чтобы проект не ломался в Nixpkgs / не ломал дерево в Nixpkgs, или чтобы знать о поломке не тогда когда она произошла в системе Nixpkgs - а заранее отправить патч.
Рекомендую действие настроить по триггеру на релиз проекта - по очевидным причинам.
источник

AL

Anton Latukha in Haskell
Идея и процесс интеграции очень простые - можно легко портировать на любую платформу тестирования/CI (берите идею).

Там маленький .sh файл в котором всё пояснено - да и всё.
источник

DB

Danil Berestov in Haskell
Я глянул тот книжку про функциональные типы данных, и там имеется такой сниппет. Мне одному он кажется странным?
источник

K

Kir in Haskell
Danil Berestov
Я глянул тот книжку про функциональные типы данных, и там имеется такой сниппет. Мне одному он кажется странным?
Какой-нибудь Hope или Миранда, вставка в дерево. Что в нём странного?
источник

DB

Danil Berestov in Haskell
Kir
Какой-нибудь Hope или Миранда, вставка в дерево. Что в нём странного?
А где тут что вставляется?
источник

JS

Jerzy Syrowiecki in Haskell
Danil Berestov
А где тут что вставляется?
везде x вставляется
источник

K

Kir in Haskell
x вставляется в дерево
источник

DB

Danil Berestov in Haskell
Jerzy Syrowiecki
везде x вставляется
Тут в терминальном случае дерево возвращается, как есть
источник

KV

Kirill Valyavin in Haskell
Danil Berestov
Я глянул тот книжку про функциональные типы данных, и там имеется такой сниппет. Мне одному он кажется странным?
Всё норм вроде
источник

JS

Jerzy Syrowiecki in Haskell
Danil Berestov
Тут в терминальном случае дерево возвращается, как есть
да, когда x == y
источник

MK

Maxim Koltsov in Haskell
Danil Berestov
Тут в терминальном случае дерево возвращается, как есть
В этом случае x=y и вставлять нечего
источник

MK

Maxim Koltsov in Haskell
Оно уже там
источник

O

Ortofax in Haskell
data Tree v = E | T Tree v Tree
источник

K

Kir in Haskell
Первая клауза - вставка, собсно
источник

DB

Danil Berestov in Haskell
Всё, допёр, там же матчинг сверху, он у меня выбился
источник

O

Ortofax in Haskell
insert x E = T E x E и т.д.
источник

DB

Danil Berestov in Haskell
Ortofax
insert x E = T E x E и т.д.
дада, оно
источник

IK

Ilya Kos in Haskell
Я могу из модуля экспортировать конструктор, но не экспортировать тип?
источник