Вопросы по теме 'scott-encoding'

Есть ли какой-нибудь нерекурсивный термин, который складывается по списку, закодированному Скоттом?
Предположим, что у меня есть scott-encoded список, например: scott = (\ c n -> c 1 (\ c n -> c 2 (\ c n -> c 3 (\ c n -> n)))) Мне нужна функция, которая получает такой список и преобразует его в фактический список ( [1,2,3] ),...
154 просмотров

Как использовать кодировку Church для Free Monads?
Я использовал тип данных Free в Control.Monad.Free из пакета free . Теперь я пытаюсь преобразовать его для использования F в Control.Monad.Free.Church , но не могу понять, как сопоставить функции. Например, простая функция сопоставления с...
1347 просмотров

Как определить тип конструктора списка, закодированного Скоттом?
Списки, закодированные по Скотту, можно определить следующим образом: newtype List a = List { uncons :: forall r. r -> (a -> List a -> r) -> r } В отличие от версии ADT, List является одновременно и типом, и...
129 просмотров