Вопросы по теме 'church-encoding'
Замыкания и универсальная количественная оценка
Я пытался понять, как реализовать в Scala типы данных, закодированные в формате Church. Кажется, что для этого требуются типы ранга n, поскольку вам понадобится первоклассная функция const типа forAll a. a -> (forAll b. b -> b) .
Однако...
1113 просмотров
schedule
03.05.2022
Выражение цифр Чёрча с помощью Boost.Bind
Числа Черча могут быть выражены в C++0x (C++11?), используя новые лямбда-части языка, используя что-то вроде это :
typedef function<int(int)> F;
static const F id = [=](int x) { return x; };
function<F(F)> church(unsigned int i)
{...
192 просмотров
schedule
27.08.2022
Что означает Ошибка: несогласованность Вселенной в Coq?
Я работаю с Основами программного обеспечения и в настоящее время выполняю упражнения по церковным числам. . Вот подпись типа натурального числа:
Definition nat := forall X : Type, (X -> X) -> X -> X.
Я определил функцию succ...
1587 просмотров
schedule
04.11.2022
Найдите наиболее общие типы следующих терминов лямбда-исчисления.
Мне трудно понять, почему это самые общие типы для соответствующих церковных цифр:
2 = λf.λx. f (f x) : (α → α) → α → α
1 = λf.λx. f x : (α → β) → α → β
0 = λf.λx. x : β → α → α
Я думал, что все числительные Черча имеют один и тот же тип:...
373 просмотров
schedule
21.12.2022
Можно ли создать представление общих АТД на уровне типов?
Используя кодировку Черча, можно представить любой произвольный алгебраический тип данных без использования встроенной системы АТД. Например, Nat можно представить (пример в Идрисе) как:
-- Original type
data Nat : Type where
natSucc : Nat...
231 просмотров
schedule
12.12.2023
Как кодировать отложенный тип с помощью Church?
С помощью функций мы можем абстрагироваться от любого типа. Вот пример типа Option :
const Some = x => y =>
k => k(x);
const None = y =>
k => y;
const sqr = n => n * n;
const run = f => t => t(f);
const x =...
37 просмотров
schedule
17.11.2022
Черч-кодирование зависимой пары
Такие пары можно легко кодировать по Черчу:
Definition prod (X Y:Set) : Set := forall (Z : Set), (X -> Y -> Z) -> Z.
Definition pair (X Y:Set)(x:X)(y:Y) : prod X Y := fun Z xy => xy x y.
Definition pair_rec (X Y...
329 просмотров
schedule
11.02.2023
Преобразование из кодировки Черча в цифры
Я пытаюсь преобразовать церковную кодировку в цифры. Я определил свое собственное определение Lambda следующим образом:
type Variable = String
data Lambda = Lam Variable Lambda
| App Lambda Lambda
| Var Variable...
178 просмотров
schedule
22.05.2023
Как итерировать или повторять нетипизированную функцию n раз?
Я практикуюсь с компилятором OCaml, и я выполняю небольшое задание, где мы должны реализовать числа Чёрча, определяемые как:
zz = pair c0 c0; ss = λp. pair ( snd p) ( plus c1 (snd p)); prd = λm. fst (m ss zz );
и для расчета ss я хочу...
81 просмотров
schedule
19.06.2022