summaryrefslogtreecommitdiff
path: root/src/content/en/pastebins/2023/07
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/en/pastebins/2023/07')
-rw-r--r--src/content/en/pastebins/2023/07/22/funcallable-amop.adoc31
1 files changed, 0 insertions, 31 deletions
diff --git a/src/content/en/pastebins/2023/07/22/funcallable-amop.adoc b/src/content/en/pastebins/2023/07/22/funcallable-amop.adoc
deleted file mode 100644
index 47a8089..0000000
--- a/src/content/en/pastebins/2023/07/22/funcallable-amop.adoc
+++ /dev/null
@@ -1,31 +0,0 @@
-= Funcallable AMOP
-
-Using `macrolet` to allow a `funcallable-standard-class` to be invoked without
-using `funcall` directly, and let the macroexpansion do that instead:
-
-[source,lisp]
-----
-#!/usr/bin/env li
-
-(asdf:load-system :closer-mop)
-
-(defclass constructor ()
- ((name :initarg :name :accessor constructor-name))
- (:metaclass closer-mop:funcallable-standard-class))
-
-(defmethod initialize-instance :after ((c constructor) &key)
- (with-slots (name) c
- (closer-mop:set-funcallable-instance-function
- c
- (lambda (x)
- (format t "~s: ~s - ~s~%" name :funcalled x)))))
-
-(let ((c (make-instance 'constructor :name "the-name")))
- (funcall c 1))
-
-(let ((c (make-instance 'constructor :name "the-name")))
- (macrolet ((c (&body body)
- `(funcall c ,@body)))
- (funcall c 2)
- (c 3)))
-----