Я знаю как минимум 4 слабо совместимых друг с другом понятия ООП:
С++: класс = неймспейc, вызов метода через точку,
CLOS: класс = идентификатор + наследование, тело метода определяется по классу всех параметров (а не только первого), методы доопределяются модификаторами :after :before :around.
Racket: класс = first-class object, как и функция, соответственно, может доопределяться по месту и не иметь имени.
Haskell: классы типов как наборы операций над типам (которые можно считать эквивалентными классам других языков)
Хотелось бы узнать, какой подход вам ближе и почему. А также, можно ли из упомянутых видов получить некую «идеальную реализацию» и какой синтаксис мог бы быть у такой реализации.
Хотелось бы знать, почему CLOS вытеснил все альтернативы.
Плюс у сообщений в том, что для разных классов сообщения
не обязаны иметь одинаковое количество параметров.
Ну и, в том же Racket, классы/объекты как раз работают на сообщениях.
В пятницу, 23 сентября, Google закрыл без объяснения причин популярный англоязычный блог ActivistPost.Com (свыше миллиона месячных просмотров), специализирующийся на новостях.
При попытке владельцев ресурся поднять сайт на другом аккаунте сервиса blogger.com, он также немедленно был заблокирован, поэтому речь не может идти о техническом сбое.
Справа сверху консоль для ввода REPL. Пока реализованы клавиатурные комбинации «C-x C-c», ":C-x C-f", «C-x C-s». Ну и define-global-key соотвественно.
REPL позволяет пытаться ввести любую галиматью без обрушения редактора (на скриншоте есть примеры). Выполнение производится по кнопке Return, если сбалансированы скобки. Если не сбалансированы, то в статусе увидите чего не хватает.
В планах прикрутить M-. из SLIME, отступы, автодополнение и раскраску кода. В дальних планах сделать repl асинхронным, чтобы длинная команда не блокировала графический интерфейс.
После запуска отрисовывается окно, но при наведении на него мышки, вылетает с ошибкой деления на 0. В clisp и ccl всё работает без ошибок. В GTK-2 — тоже.
Кто-нибудь может помочь или посоветовать куда копать (пробовал блокировать
обработчики motion_notify_event, enter_notify_event, focus_in_event, proximity_in_event — не помогло: разве что запускаются они непосредственно перед тем самым делением на ноль)