aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2025-02-22 23:03:23 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2025-02-22 23:03:23 +0000
commite3d875d48acae3a1d40ea7de33b12567c855c974 (patch)
tree40d87454da33a29ba5293dfabc8f26601cd05f6a /lib
parente7bf0b4fc653a5b9d608826b7de667f3ca1202e8 (diff)
downloadcantedraw-e3d875d48acae3a1d40ea7de33b12567c855c974.tar.gz
cantedraw-e3d875d48acae3a1d40ea7de33b12567c855c974.tar.bz2
cantedraw-e3d875d48acae3a1d40ea7de33b12567c855c974.zip
Implement specific function generation functions for each threading macro
Diffstat (limited to 'lib')
-rw-r--r--lib/macros.lisp20
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/macros.lisp b/lib/macros.lisp
index d925ac5..c60b867 100644
--- a/lib/macros.lisp
+++ b/lib/macros.lisp
@@ -101,11 +101,25 @@ arguments `LAMBDA-LIST' with body `BODY'."
(defun ,name ,lambda-list
,@body)))
-(defmacro $ (capture &rest forms)
+(defmacro $-> (capture &rest forms)
"Given a sequence of FORMS, return a unary function which applies each form
-sequentially"
+sequentially via -->"
`(lambda (,capture)
- (->> ,capture ,@forms)))
+ (--> ,capture ,capture ,@forms)))
+
+(defmacro $<> (&rest forms)
+ "Given a sequence of FORMS, return a unary function which applies each form
+sequentially via -<>"
+ (let ((capture (gensym)))
+ `(lambda (,capture)
+ (-<> ,capture ,@forms))))
+
+(defmacro $>> (&rest forms)
+ "Given a sequence of FORMS, return a unary function which applies each form
+sequentially via ->>"
+ (let ((capture (gensym)))
+ `(lambda (,capture)
+ (->> ,capture ,@forms))))
(defmacro alist-val (key alist)
"Helper macro for getting the value of KEY in ALIST."