/clops

Primary LanguageCommon LispMIT LicenseMIT

README

This is a demonstration of the problem with using AMOP for type checking.

Running it

Assuming you have ultralisp set up and your equivalent of libgtk-4-dev installed.

In your REPL please execute

(load "~/Programming/Lisp/clops/clops.lisp")
(in-package :clops)
(main)

Then press F2, F3, F4 and F5. Observe what was drawn try putting mouse over the squares. Then try pressing F7 and F8 to see the rightmost square moving with the internal structure preserved.

Problem

I am running latest SBCL compiled from source. I observed strange problems that I will try to demonstrate here.

metaclass

Commenting out the metaclass in

(defclass/std box-status (box)
  ((status :std nil))
  ;; (:metaclass checked-class:checked-class)
  )

gives the error that has confused me

The class #<CHECKED-CLASS:CHECKED-CLASS CLOPS::BOX> was
specified as a superclass of the class
#<STANDARD-CLASS CLOPS::BOX-STATUS {100C733A93}>, but the
metaclasses #<STANDARD-CLASS CHECKED-CLASS:CHECKED-CLASS> and
#<STANDARD-CLASS COMMON-LISP:STANDARD-CLASS> are incompatible.
Define a method for SB-MOP:VALIDATE-SUPERCLASS to avoid this
error.

brackets

I also observed an error with unbalanced parentheses. I can not replicate it. In Emacs all the parentheses looked OK. Is it possible that I stumbled upon an unrelated SBCL bug?

sbcl --version
SBCL 2.4.3.86-fd7b2a2b0