diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-22 23:03:23 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-22 23:03:23 +0000 |
commit | e3d875d48acae3a1d40ea7de33b12567c855c974 (patch) | |
tree | 40d87454da33a29ba5293dfabc8f26601cd05f6a /lib | |
parent | e7bf0b4fc653a5b9d608826b7de667f3ca1202e8 (diff) | |
download | cantedraw-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.lisp | 20 |
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." |