diff --git a/dash.el b/dash.el index 9788de6..483b080 100644 --- a/dash.el +++ b/dash.el @@ -1168,16 +1168,17 @@ second item in second form, etc." (list form x))) (:else `(-> (-> ,x ,form) ,@more)))) -(defmacro ->> (x form &rest more) +(defmacro ->> (x &optional form &rest more) "Thread the expr through the forms. Insert X as the last item in the first form, making a list of it if it is not a list already. If there are more forms, insert the first form as the last item in second form, etc." - (if (null more) - (if (listp form) - `(,(car form) ,@(cdr form) ,x) - (list form x)) - `(->> (->> ,x ,form) ,@more))) + (cond + ((null form) x) + ((null more) (if (listp form) + `(,@form ,x) + (list form x))) + (:else `(->> (->> ,x ,form) ,@more)))) (defmacro --> (x form &rest more) "Thread the expr through the forms. Insert X at the position