Commits

evhan committed 03b21f8

extend thrush to accept non-parenthesized clauses

  • Participants
  • Parent commits f64e1f2

Comments (0)

Files changed (2)

File clojurian-syntax.scm

   (syntax-rules ()
     ((_ x) x)
     ((_ x (y z ...) rest ...)
-     (-> (y x z ...) rest ...))))
+     (-> (y x z ...) rest ...))
+    ((_ x y rest ...)
+     (-> x (y) rest ...))))
 
 (define-syntax ->>
   (syntax-rules ()
     ((_ x) x)
     ((_ x (y ...) rest ...)
-     (->> (y ... x) rest ...))))
+     (->> (y ... x) rest ...))
+    ((_ x y rest ...)
+     (->> x (y) rest ...))))
 
 (define-syntax ->*
   (syntax-rules ()
     ((_ x (y z ...) rest ...)
      (->* (receive args x
             (apply y (append args (list z ...))))
-          rest ...))))
+          rest ...))
+    ((_ x y rest ...)
+     (->* x (y) rest ...))))
 
 (define-syntax ->>*
   (syntax-rules ()
     ((_ x (y z ...) rest ...)
      (->>* (receive args x
              (apply y (append (list z ...) args)))
-           rest ...))))
+           rest ...))
+    ((_ x y rest ...)
+     (->>* x (y) rest ...))))
 
 (define-syntax if-let
   (syntax-rules ()

File tests/syntax.scm

 
   (test 9 (->> 1 (+ 2) (* 3)))
 
+  (test -1 (-> 1 -))
+  (test 2 (-> 14 (+ 2) sqrt (- 2) inexact->exact))
+  (test '(1 2) (->* (values 1 2) list))
+
   (test 9 (->> '(1 2 3)
                (map add1)
                (fold + 0)))
 
+  (test -1 (->> 1 -))
+
   (test '((foo . 100) (bar . 200))
         (->>* (values '(foo bar) '(100 200))
-              (map cons))))
+              (map cons)))
+
+  (test '("a" "b")
+        (->>* (values 'a 'b)
+              list
+              (map symbol->string))))
 
 (test-group "if-let & if-let*"
   (test 2 (if-let (x 1) (+ x x) 9))