From 395cd9357e2dbcf3bb0ffcaa45c79492ed4c3317 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sat, 15 Feb 2025 15:04:00 +0000 Subject: Rework `$` operator to take a capture variable In case operators require use of a variable, we should let the caller provide the symbol so we don't fall into weird package issues. --- lib/macros.lisp | 6 +++--- src/model.lisp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/macros.lisp b/lib/macros.lisp index d182ce0..cb11901 100644 --- a/lib/macros.lisp +++ b/lib/macros.lisp @@ -80,11 +80,11 @@ arguments `LAMBDA-LIST' with body `BODY'." (defun ,name ,lambda-list ,@body))) -(defmacro $ (&rest forms) +(defmacro $ (capture &rest forms) "Given a sequence of FORMS, return a unary function which applies each form sequentially" - `(lambda (x) - (->> x ,@forms))) + `(lambda (,capture) + (->> ,capture ,@forms))) (defmacro alist-val (key alist) "Helper macro for getting the value of KEY in ALIST." diff --git a/src/model.lisp b/src/model.lisp index ff9b7ad..7cb1792 100644 --- a/src/model.lisp +++ b/src/model.lisp @@ -133,5 +133,5 @@ (loop :for _ :from 1 :to n :nconc (loop :for j :from 1 :to 52 collect (int->card (1- j)))) - (mapcar ($ int->rank make-joker) + (mapcar ($ x int->rank make-joker) (range 0 (* 2 n))))) -- cgit v1.2.3-13-gbd6f