Общая объектная система Lisp
3 ответа

Есть ли способ получить доступ к слотам в списке суперклассов в CLOS?

Есть ли способ получить доступ к слотам суперклассов в CLOS? Например, в Objective C I можно выполнить - (void) frob { [super frob] } Это отправляет сообщение (единственному) суперклассу frob. Изучение документации CLOS предполагает, что DEFCLASS об…
30 окт '13 в 00:25
1 ответ

Общий lisp: значение слота для структур defstruct

В общем, что я могу использовать для доступа к слоту структуры, используя имя / символ слота? Что я хочу это (defstruct point (x 0) (y 0)) (defmacro -> (struct slot) `(slot-value ,struct ,slot)) (setf p (make-point)) (setf (slot-value p 'x) 1) (s…
22 июн '13 в 05:14
3 ответа

CLOS как объектная модель для PHP

Я вернулся к разработке php из Moose, и мне очень не хватает CLOS, как объектной модели для php. Есть ли какой-то синтаксический сахар, который позволил бы мне писать меньше кода на php при работе с объектами? Просто чтобы подчеркнуть это требование…
02 окт '08 в 21:59
1 ответ

CLOS make-instance действительно медленный и вызывает исчерпание кучи в SBCL

Я пишу многоархитектурный ассемблер / дизассемблер в Common Lisp (SBCL 1.1.5 в 64-битном Debian GNU/Linux), в настоящее время ассемблер производит правильный код для подмножества x86-64. Для сборки кода сборки x86-64 я использую хеш-таблицу, в котор…
24 ноя '14 в 00:04
1 ответ

CLOS: Что я здесь делаю, устанавливая слот в метаклассе?

(ql:quickload :postmodern) (defpackage :test-case (:use :cl) (:import :pomo)) (in-package :test-case) ;; (defclass dao-class (standard-class) ;; ((direct-keys :initarg :keys :initform nil :reader direct-keys) ;; (effective-keys :reader dao-keys) ;; …
24 июн '13 в 15:15
2 ответа

Изменение метода отправки в Common Lisp

Я пытаюсь смоделировать что-то похожее на классы типов Хаскелла с CLOS Common Lisp. То есть я хотел бы иметь возможность отправлять метод для "классов типов" объекта вместо его суперклассов. У меня есть метакласс, определенный для классов, которые и…
19 ноя '15 в 05:26
2 ответа

lisp, CLOS: добавление слота в класс процесса

Моя программа получает ошибки с многопоточностью, поэтому я хочу расширить макрос с захватом блокировки, чтобы отслеживать стек блокировок, которые получает процесс. Я хочу сделать это, просто добавив слот в процесс для хранения стека блокировки. К …
08 июн '13 в 19:00
2 ответа

lisp, CLOS: добавление слота в класс блокировки

Я пытаюсь добавить новый слот в класс блокировки. Это полезно, потому что у меня много блокировок в иерархии, и если я сохраняю родительскую блокировку для каждой блокировки, становится легче обнаруживать проблемы во время отладки. К сожалению, этог…
15 июн '13 в 09:38
2 ответа

Сравнение Common Lisp с Gambit по отношению к их библиотеке и объектным системам

Я очень заинтригован Gambit Scheme, в частности, его широким спектром поддерживаемых платформ и возможностью помещать код C прямо в исходный код Scheme, когда это необходимо. Тем не менее, это Схема, в которой меньше "включенных батарей" по сравнени…
03 янв '11 в 20:10
1 ответ

Сохранение объектов CLOS

Сохранение любого объекта структуры Common Lisp в файл (читабельно) кажется относительно простым с чем-то вроде (defun save-structure-object (object filename) (with-open-file (stream filename :direction :output :if-exists :supersede) (with-standard-…
19 фев '17 в 23:31
1 ответ

Как получить доступ к метаобъектам / слотам определения слотов? Почему `slot-value` может обращаться к слотам объектов, но не к слотам метаобъектов?

У меня проблема с доступом к слотам из определений слотов. Я могу проверять объекты классов, видеть их определения слотов и даже получать некоторую стандартную информацию об определениях слотов. Однако я не могу получить доступ к пользовательской ин…
14 фев '19 в 20:23
2 ответа

Common Lisp Несколько метаклассов

Недавно обнаружив активный форк веблоков, я хотел бы объединить его с библиотекой ORM mito. Weblocks определяет макрос defwidgetкоторый на практике оборачивает defclass вот так: (defclass my-class () ((slot)) (:metaclass weblocks/widgets/mop:widgets…
09 дек '18 в 16:54
1 ответ

Является ли CLOS слабым местом в Common Lisp?

Что я хочу иметь в виду, если CLOS - это плохая практика для функционального программирования на Лиспе?
22 сен '11 в 12:43
1 ответ

sbcl / CLOS Почему я должен добавить метод "validate-superclass" здесь?

В SBCL, когда я определяю новый метакласс CL-USER> (defclass counting-class (standard-class) ((counter :initform 0))) #<STANDARD-CLASS COUNTING-CLASS> и добавьте метод в GF "make-instance": CL-USER> (defmethod make-instance :after ((clas…
18 окт '13 в 09:29
2 ответа

Указание значения слота в качестве ключа при удалении дубликатов

Следующий код делает то, что я хочу: 1 (defclass some-class () 2 ((some-slot 3 :initarg :somearg 4 :initform (error ":somearg not specified")))) 5 (defparameter *alpha* (make-instance 'some-class :somearg 3)) 6 (defparameter *beta* (make-instance 's…
29 янв '12 в 01:35
2 ответа

Переопределение:INITFORM слота класса в подклассе

Мне нужно немного обобщить значение слота по умолчанию в подклассе. Пример: (defclass class-a () ((slot-1 :initarg :slot-1 :initform #'identity) <...> other-slots<...>)) Его подкласс (defclass class-b (class-a) ((slot-2 :initarg :slot-2 …
28 июл '16 в 10:08
4 ответа

Отмена определения класса и всех его методов в Common Lisp

Я хотел бы определить класс и все его методы, но после довольно тщательного поиска в Googlore я не смог найти подсказку о том, как это сделать. Я использую реализацию Commmon Lisp под названием CCL (Clozure CL).
04 сен '13 в 16:28
2 ответа

Разница между структурой и классом в Common Lisp

Мое понимание структуры состоит в том, что она имеет слоты для хранения данных, имеет тип, имеет make-X и функции доступа к слотам, и могут быть специализированы по методу (так как он имеет тип). Мое понимание класса состоит в том, что у него все од…
12 дек '15 в 20:52
1 ответ

Как изменить метакласс класса

Это происходит со мной снова и снова: я определяю класс и забываю, что хотел, чтобы он был функциональным или, скажем, классом виджетов Gtk, поэтому необходимо указать его метакласс. Однако, как только он определен, SBCL не позволяет мне изменять ме…
07 авг '16 в 07:27
2 ответа

ЗАКРЫТЬ: Как сделать так, чтобы слот имел вектор символов принудительного типа?

Я пытаюсь создать класс, который может хранить вектор символов в слоте в SBCL. Я не могу понять, как его настроить. Моя лучшая догадка до сих пор была (defclass Individual () ((discrete-decisions :type (vector symbol)))) Это возвращает следующую оши…
23 сен '12 в 21:41