2
arseniivЦитата:
Кстати, бесконечные объекты в тех языках вроде бы обычно задаются генераторами?
Наверное и так можно (yield?). Изначально я представлял себе рекурсивные типы + ленивые вычисления.
Цитата:
А вот в языке с одними только множествами вроде так просто не получится
О как удобно иметь понятие "функция" в языке программирования. :) Похоже, что отождествление множества и его индикаторной функции решает все проблемы. Просто как-то это надо утопить в деталях реализации и пользователю не показывать...
Цитата:
что-то делать также с аксиомой выбора.
Там живут драконы... А нельзя ли её полностью игнорировать? Например, если какая-то функция будет выплевывать непустые множества, а мы будем строить из них декартово произведение, то можно считать (гарантировать), с аппеляцией к очевидности, что результат будет непустым. Т.е., в некоторых случаях действие аксиомы выбора будет проявляться само-собой... Могу и ошибаться; поэтому если у вас есть какие-нибудь соображения по этой проблеме -- был бы рад послушать.
Мне кажется, что генераторный или рекурсивно-ленивый подход определения бесконечных множеств естественным образом распространяет свойсва конечных множеств на бесконечные. Но можно попробовать и как-нибудь обходить аксиому выбора, примерно также, как её пытаются обходить математики в своих доказательствах. Например, можно при выборе элементов из множеств делать это через отношение порядка или ещё как-нибудь в явном виде. Наверное, это ограничивает декларативный потенциал языка, но само по себе все это очень интересно. Представил себе предупреждение компилятора, "banach_tarski.s1, at line 23, warning: declaration require the axiom of choice.". :)
____________________Можно ещё какие-нибудь фичи в ваш язык надобавлять, например, из декларативного программирования. Вот интересная идея: J.Cai, R.Paige, Program Derivation by Fixed Point Computation.
В общем, не хотелось бы, чтобы вы забросили это замечательное начинание.
(Оффтоп)
Готов всячески поучаствовать в написании инфраструктуры парсера/компилятора. :) Есть небольшой опыт конструирования простых (студенческих) интерпретаторов
и forth'а, а также x86 компиляторов тех же диалектов (для
-кода есть ещё secd-vm; форт-машина же сейчас преписывается на классический лад, т.е. в виде самостоятельной ОС) + компилятор подмножества C (кодогенератор как для vm, так и для железа); для углубления знаний ecmascript (js) пишу самодельный jit-движок (непортабельный, с генерацией нативного x86-кода для скорости). Вдруг пригожусь. :)
2
_hum_Цитата:
Кстати, вроде достаточно
, двух базовых множеств -
и возможности исчисления логических предикатов
Похоже, что достаточно лишь "исчисления логических предикатов" или лишь теор-множественных объектов/операций. Потому что одно можно определить через другое. (?)
(Оффтоп)