summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2023-01-08 16:13:38 +0100
committerLeah Neukirchen <leah@vuxu.org>2023-01-08 16:13:38 +0100
commit18bfa25b243653ae06956e2d029a3ccbd5d3f4e8 (patch)
tree088484380fdf7a1bb074101d10c3a085ec996d76
parent6577a1d3c3e250ea9cd204baac4633e5e68ceabb (diff)
downloadmew-18bfa25b243653ae06956e2d029a3ccbd5d3f4e8.tar.gz
mew-18bfa25b243653ae06956e2d029a3ccbd5d3f4e8.tar.xz
mew-18bfa25b243653ae06956e2d029a3ccbd5d3f4e8.zip
add cr
-rw-r--r--mew.scm5
-rw-r--r--mew.svnwiki4
-rw-r--r--tests/test.mew6
3 files changed, 14 insertions, 1 deletions
diff --git a/mew.scm b/mew.scm
index 0e54d91..dc5dda6 100644
--- a/mew.scm
+++ b/mew.scm
@@ -2,7 +2,7 @@
   (export
      act accumulate andloc app at
      boolean
-     cmp comp cross-product
+     cmp comp cross-product cr
      dec dec! def del-at div dup
      empty? eof esc
      fail fin final for for/into fun*
@@ -428,6 +428,9 @@
                  (else o)))
          o))))
 
+  (define (cr o)
+    o)
+
   (define (generic-for-each obj)
     (cond ((list? obj) for-each)
           ((vector? obj) vector-for-each)
diff --git a/mew.svnwiki b/mew.svnwiki
index a7f55a0..53401d4 100644
--- a/mew.svnwiki
+++ b/mew.svnwiki
@@ -198,6 +198,10 @@ and finally 2.
 Expands to a function that returns its {{<N>}}th argument (zero indexed).
 Multiple arguments are returned as multiple values.
 
+<procedure>(cr <obj>)</procedure>
+
+The single argument identity function.  Generalizes the {{c.*r}} family.
+
 <procedure>(boolean <obj>)</procedure>
 
 Return false if {{<obj>}} is {{#f}}, and true else.
diff --git a/tests/test.mew b/tests/test.mew
index 837edd8..633588a 100644
--- a/tests/test.mew
+++ b/tests/test.mew
@@ -285,6 +285,12 @@
   (test 42 ((op* * 7) 2 3))
   (test 42 ((op* * 2 ... 3) 7)))
 
+(test-group "cr"
+  (test '(foo) (cr '(foo)))
+  (test 42 (cr 42))
+  (test-error (cr))
+  (test-error (cr 42 43)))
+
 (test-group "rep"
   (test #t (void? (rep loop ())))
   (test 42 (rep loop (x 27 y 5)