Add a handy disassembly macro
author |
Steve Losh <steve@stevelosh.com> |
date |
Tue, 05 Jul 2016 16:44:10 +0000 |
parents |
970e21fa14b0
|
children |
6a93a2d2ed60
|
branches/tags |
(none) |
files |
package.lisp src/utils.lisp |
Changes
--- a/package.lisp Mon Jul 04 23:35:08 2016 +0000
+++ b/package.lisp Tue Jul 05 16:44:10 2016 +0000
@@ -6,6 +6,7 @@
(:use
#:cl
#:defstar
+ #:cl-arrows
#:bones.quickutils)
(:export
#:repeat
@@ -15,7 +16,7 @@
#:recur
#:when-let
#:unique-items
- ))
+ #:dis))
(defpackage #:bones.circle
(:use #:cl #:defstar)
--- a/src/utils.lisp Mon Jul 04 23:35:08 2016 +0000
+++ b/src/utils.lisp Tue Jul 05 16:44:10 2016 +0000
@@ -56,6 +56,15 @@
:finally (return once)))
+(defmacro dis (arglist &body body)
+ `(->> '(lambda* ,arglist
+ (declare (optimize speed))
+ ,@body)
+ macroexpand-1
+ (compile nil)
+ disassemble))
+
+
;;;; loop/recur
(defmacro recursively (bindings &body body)
"Execute body recursively, like Clojure's `loop`/`recur`.