Нахождение "свободной теоремы"
Как вывести свободную теорему для типа:
data F a = C1 Nat | C2 Bool Nat a
где Nat
это просто data Nat = Z | S Nat
?
В принципе, на это может ответить пакет "свободных теорем" на Haskell, но он слишком стар для компиляции под любой версией GHC, которую я могу установить.
1 ответ
Решение
Есть онлайн-генератор бесплатных теорем, и когда он недавно отключился, я создал альтернативный интерфейс, который полностью работает в браузере (используя reflex-dom
).
Но более глубокая проблема заключается в том, что свободные теоремы, в смысле этих пакетов, являются свойствами полиморфных функций, поэтому, чтобы ответить на ваш вопрос, вы должны дать функцию (например, map
) чья свободная теорема вас интересует.