Комментарии
Спасибо за статью! Приятно видеть примеры полезности систем эффектов.

нетранзитивное симметричное отношение порядка


Отношение порядка по определению транзитивно.

Олсо,
симметричное
	survive Wolf Goat = GT
	survive Goat Wolf = LT



Я бы вообще сделал isCompatible :: a -> a -> Bool (всё равно вы потом проверяете, вернуло ли ваше survive EQ, и конкретный порядок вам не нужен).

Так что это просто нетранзитивное симметричное отношение. Хорошего названия для него я не знаю.

Кмк ещё необходимо контролировать, чтобы состояние не повторялось.

Какая прелесть. А можно попросить продемонстрировать на примере «японской задачи о перевозке»?

Условия задачи
Через реку при помощи плота должны переправиться: шериф с заключенным, а также семья из матери, отца, 2 дочерей и 2 сыновей.

При этом:

  1. Дети не могут одни находиться на плоту.
  2. Шериф не может оставлять заключенного с остальными.
  3. Мужчина не может оставлять своих двух сыновей одних с женщиной, а женщина – своих дочерей с мужчиной.
  4. Плот не может плыть сам по себе, и на нем могут находиться не больше 2 человек.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.