Экспериментальное исследование экспрессии лямбда?

91
8

Я хотел бы проверить интерпретатор Lambda Calculus, который я написал против довольно большого тестового набора выражений Lambda Calculus. Кто-нибудь знает генератор выражений Lambda Calc, который я могу использовать (ничего не мог найти при первоначальном поиске в Google)? Очевидно, эти выражения должны быть правильно сформированы.


Еще лучше, хотя я сам создал различные примеры и разработал решения, чтобы я мог проверить результаты, знает ли кто-нибудь о хорошем (и большом) наборе разработанных проблем сокращения Lambda Calculus с решениями? Я могу сам вводить выражения, поэтому важно иметь простое множество более простых (и более крупных) выражений лямбда-исчисления, на которых я могу протестировать мой интерпретатор (который в настоящий момент моделирует стратегии оценки "Обычный порядок" и "Вызов по имени" ).


Приветствуется любая помощь или руководство.

спросил(а) 2013-03-28T22:51:00+04:00 7 лет, 7 месяцев назад
1
Решение
70

Asperti and Guerrini (1998, Оптимальная реализация языков функционального программирования, CUP Press, см. особенно главы 5 и 6) описывают некоторые из более болезненных лямбда-терминов, которые возникают из теории Жана-Жака Леви семейств передеек и меченого сокращения: они дают меры сложности взаимодействия между сталкивающимися бета-сокращениями, где сокращение либо redex создает работу для другого.


Относительно простой пример сталкивающихся сокращений:


let D =  λx(x x); F= λf.(f (f y)); and I= λx.x in
(D (F I))

который имеет два бета-переопределения и сводится к (y y): уменьшает либо одну из них путем регулярной подстановки, и вы создадите два новых redexes, каждый из которых связан с частью структуры в исходном терминале.

Итерационные цифры церкви хороши одинаково:


let T = λfx. f(f( x)) in 
λfx.(T (T (T (T T))) f x)

(что уменьшает численность Церкви для 65 536), которая генерирует много встречных переделок.


Как правило, применение терминов более высокого порядка друг к другу, независимо от того, являются ли они "типичными" или имеют очевидный смысл, является хорошим источником тяжелой работы, которая генерирует сложную промежуточную структуру.

ответил(а) 2013-05-02T10:44:00+04:00 7 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема