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 | |
| parent | e7bf0b4fc653a5b9d608826b7de667f3ca1202e8 (diff) | |
| download | cantedraw-e3d875d48acae3a1d40ea7de33b12567c855c974.tar.gz cantedraw-e3d875d48acae3a1d40ea7de33b12567c855c974.tar.bz2 cantedraw-e3d875d48acae3a1d40ea7de33b12567c855c974.zip  | |
Implement specific function generation functions for each threading macro
| -rw-r--r-- | lib/macros.lisp | 20 | ||||
| -rw-r--r-- | packages.lisp | 2 | 
2 files changed, 18 insertions, 4 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." diff --git a/packages.lisp b/packages.lisp index a6db383..594dda5 100644 --- a/packages.lisp +++ b/packages.lisp @@ -24,7 +24,7 @@     :--> :->> :-<>     :-> :fn     :while :alist-val -   :$)) +   :$-> :$>> :$<>))  (defpackage cantedraw.lib.functions    (:nicknames :5d-lib.functions)  | 
