Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/Alterator/objects ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/Alterator/objects за 2005-09-22 13:16:26..

Объектная система alterator.


В текущей нестабильной ветке alterator произошло большое изменение, там внедрены объекты. Зачем это нужно? Нужно это для того чтобы поддерживать код alterator было легче, чтобы убрать старые хаки, уменьшить количество cond и case, затрудняющее чтение. Что это такое? Читайте далее ....

Меченные функции


В Scheme, как во всяком уважающем себя функциональном языке, возможно построить структуру данных «пара» не пользуясь встроенными типами данных, а прямо на функциях. Например, это можно сделать так:

Однако всё не так хорошо как хотелось бы. Пользуясь только одними функциями невозможно сделать предикат pair?, то есть функцию, которая получив на вход некий объект, выдаёт истина только в случае если этот объект определённая выше структура «пара». Почему? Да очень просто. Вы не можете различать процедуры между собой. Ибо единственный способ различить подобные процедуры, это только запускать их, но результатом запуска может быть что угодно, включая попадание в вечный цикл. Говоря умнее, мы можем построить только полухарактеристическую функцию для множества пар.


Отсюда мораль, что требуется со стороны языка дополнительный способ «пометить» процедуры. Тогда мы могли бы гарантированно различать разные классы процедур между собой. Большинство реализаций Scheme поддерживают данный приём в том или ином виде.


Итак появляются первые две процедуры нашей объектной системы:


Пример:


Ура! Теперь мы можем различать между собой процедуры, чем это хорошо для нас – увидите чуть позже.

Объекты – это замыкания для бедных


Эта цитата принадлежит Norman Adams и сейчас вы убедитесь насколько это верно ;)



 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]