Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2010-04-04 18:08:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Про аксиому фундирования
В одном треде возник вопрос о мотивированности аксиомы фундирования AKA регулярности (которая запрещает в числе прочего и множества, содержащие себя в качестве элемета - вроде x = {x}). Это довольно поздняя аксиома - в канон ZF она, ЕМНИМП, попала в 1925 году стараниями фон Неймана. Традиционный аргумент в ее пользу - что это объекты настолько странные, что "и ну их нафиг".

В математие принято предсталвять функцию как множество упорядоченных пар <x, f (x)> (c условием, что для любого x существует не более одной пары содержащей его первым элементом). Вполне понятно, что при таком определении аксиома фундирования запрещает существование функций, которые могут применяться сами к себе: потому что в соотвествующем множестве должна будет быть пара <f, f(x)> - то есть множество f будет содержать самое себя.

Это преамбула. А амбула в том, что самоприменимые функции - вролне бытовая реальность кучи языков программирования - вот простейший пример из Haskell:

dup f = λx → f (f x)


Сысл понят:ен: она берет одноместную функцию и возвращает ее в удвоенном виде:

dup sin 1.0 ≡ sin (sin 1.0)

Вполне понятно, что dup dup f x ≡ dup (dup f) x ≡ f (f (f (f x)))

Что несложно проверить опытным путем:

main = print ((dup dup) (+1) 0)

выводит, как и следовало ожидать, чисто 4

Это, разумеется, не единственный пример самоприменимых функций, но imho достаточно показательный.


(Читать комментарии) - (Добавить комментарий)


[info]gregory_777
2010-04-05 01:49 (ссылка)
Некорректно как раз обратное, т.к. каждая копия образует своё пространство области действия переменной x, то есть сам x для каждой копии - это не один и тот же х. То есть мы имеем как бы цепочку функция f1(x1), f2(x2), f3(x3), таких, что x2 = f3(x3), x1 = f2(x2), y = f1(x1) при x3 = x.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]gregory_777
2010-04-05 01:50 (ссылка)
Прости за орфографию. Чот я нпился ;)
Празнег.

(Ответить) (Уровень выше)


[info]kouzdra
2010-04-05 01:52 (ссылка)
Компилятор haskell в любой момент по своему усмотрению имеет право создать копию любой структуры или ее части: потому если программа пытается основывать свою семантику на физической идентичности объектов (легального способа обнаружить которую нет) - это некорректная программа: могут существовать вполне корректные компиляторы, на которых она не будет правильно работать.

(Ответить) (Уровень выше)


(Читать комментарии) -