‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

Проси больше.

Я так понимаю, что малость подзаебал вас своим маньячеством на тему самопального лиспа. И что-то подсказывает мне, что надо бы сменить тему, пока меня не записали в городские сумашседшие (или уже?)

Вот вам занятный исторический фuckт:
Переговоры сорвались, поскольку Жан-Луи Гассье просил $200 миллионов, а Apple готова была потратить не более 125. Совет директоров Apple решил, что лучше выбрать NeXTSTEP и купил NeXT в 1996 году за $429 миллионов, вернув в руководство основателя компании Стива Джобса.


А шо касаемо маньячества: киплю мозгом на тему того, как реализовать архиважнейший механизм, без которого не имеет смысла (ну, почти не имеет) дальнейшее развитие: нужно придумать, как сделать т.н. "замыкания", они же closures. Это очень хитрая, но в то же время изящная идея, схожая в некоторых моментах с концепцией статических переменных в Си.

Как известно, когда вы создаёте внутри функции переменную, используя ключевое слово static, то это предписывает компилятору "зарезервировать место" под эту переменную и больше ничем его не занимать. Когда вызывает функция, она уже "знает", что конкретно вот по этому адресу лежит то, что там лежало - это не динамически создаваемая переменная, и тем более не стековая переменная. Адрес жёстко фиксирован на этапе компиляции. Поэтому мы можем положить по этому адресу некое значение, которое не будет изменяться в процессе работы других функций (только если им не позволить это сделать, передав, например, указатель - здравствуй, выстрел яйцами из подсвечника!).

В лиспе нет адресов, тем более жёстко фиксированных. Поэтому такой фокус тут не сработает. Нужно нечто совсем иное... И, главное, всё должно бесшовно вписываться в существующий код. Имея такой механизм, реализовать свой вариант объектно-ориентированного лиспа - как нефиг делать, оно вообще само собой получится ( символы, втянутые в замыкание, автоматически становятся почти что полным аналогом "приватных" полей классов в C++ - снаружи они не видны вообще никак, но класс о них знает всё. И можно тем самым различать поля КЛАССА от полей ЭКЗЕМПЛЯРА. Ваще мощь. )

Контекст для хранения символов у меня уже реализован. Видимо, нужно развить этот механизм дальше - когда создаётся замыкание, нужно создавать новый "подконтекст" и где-то его хранить всё время, пока существует связанный с ним символ. Идеи, идеи. Бороду-то я сбрею....
Tags: uncommon lisp
Subscribe

  • worklog: плата питания для AM5708 (2)

    Разводка завершена, теперь её надо попробовать как-нибудь ещё улучшить. Этому обычно помогает отложить проект на день, чтобы потом посмотреть на него…

  • Смотрите, что я заметил.

    Смотрел запись программы "Время" от 17 октября 1990. В рубрике о спорте рассказано, в частности, о матче Каспаров-Карпов, на моменте 36:38 в кадре…

  • Очередное подтверждение правоты моего тезиса

    Каждый луноборец оказывается ещё и плоскозёмом: сначала Kevlar 13 просто поверил в невозможность полётов на Луну, а теперь уже отрицает возможность…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 28 comments

  • worklog: плата питания для AM5708 (2)

    Разводка завершена, теперь её надо попробовать как-нибудь ещё улучшить. Этому обычно помогает отложить проект на день, чтобы потом посмотреть на него…

  • Смотрите, что я заметил.

    Смотрел запись программы "Время" от 17 октября 1990. В рубрике о спорте рассказано, в частности, о матче Каспаров-Карпов, на моменте 36:38 в кадре…

  • Очередное подтверждение правоты моего тезиса

    Каждый луноборец оказывается ещё и плоскозёмом: сначала Kevlar 13 просто поверил в невозможность полётов на Луну, а теперь уже отрицает возможность…