Нахождение "свободной теоремы"

Как вывести свободную теорему для типа:

data F a = C1 Nat | C2 Bool Nat a

где Nat это просто data Nat = Z | S Nat?

В принципе, на это может ответить пакет "свободных теорем" на Haskell, но он слишком стар для компиляции под любой версией GHC, которую я могу установить.

1 ответ

Решение

Есть онлайн-генератор бесплатных теорем, и когда он недавно отключился, я создал альтернативный интерфейс, который полностью работает в браузере (используя reflex-dom).

Но более глубокая проблема заключается в том, что свободные теоремы, в смысле этих пакетов, являются свойствами полиморфных функций, поэтому, чтобы ответить на ваш вопрос, вы должны дать функцию (например, map) чья свободная теорема вас интересует.

Другие вопросы по тегам