Implement specific function generation functions for each threading macro

This commit is contained in:
2025-02-22 23:03:23 +00:00
parent e7bf0b4fc6
commit e3d875d48a
2 changed files with 18 additions and 4 deletions

View File

@@ -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."

View File

@@ -24,7 +24,7 @@
:--> :->> :-<>
:-> :fn
:while :alist-val
:$))
:$-> :$>> :$<>))
(defpackage cantedraw.lib.functions
(:nicknames :5d-lib.functions)