From bd5f0ba6f8c5001a38d34b27263d99d6f418f4ba Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Wed, 31 Aug 2011 16:11:15 -0400 Subject: [PATCH] tests for andmap ormap running --- .../runtime-src/baselib-primitives.js | 19 +++++++++++++++++++ lang/kernel.rkt | 6 +++--- tests/more-tests/lists.expected | 12 ++++++++++++ tests/more-tests/lists.rkt | 16 +++++++++++++++- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/js-assembler/runtime-src/baselib-primitives.js b/js-assembler/runtime-src/baselib-primitives.js index 8e68f8b..3171162 100644 --- a/js-assembler/runtime-src/baselib-primitives.js +++ b/js-assembler/runtime-src/baselib-primitives.js @@ -1232,6 +1232,8 @@ }); + + installPrimitiveProcedure( 'number?', 1, @@ -1259,6 +1261,23 @@ return isRational(MACHINE.env[MACHINE.env.length - 1]); }); + installPrimitiveProcedure( + 'even?', + 1, + function(MACHINE) { + var n = checkInteger(MACHINE, 'even?', 0); + return baselib.numbers.equals(0, baselib.numbers.modulo(n, 2)) + }); + + installPrimitiveProcedure( + 'odd?', + 1, + function(MACHINE) { + var n = checkInteger(MACHINE, 'odd?', 0); + return baselib.numbers.equals(1, baselib.numbers.modulo(n, 2)) + }); + + diff --git a/lang/kernel.rkt b/lang/kernel.rkt index b6097dd..d0c90e5 100644 --- a/lang/kernel.rkt +++ b/lang/kernel.rkt @@ -302,9 +302,9 @@ integer? exact? exact-nonnegative-integer? ;; inexact? -;; odd? -;; even? - zero? +odd? +even? +zero? ;; positive? ;; negative? ;; box? diff --git a/tests/more-tests/lists.expected b/tests/more-tests/lists.expected index 6853182..c859ffb 100644 --- a/tests/more-tests/lists.expected +++ b/tests/more-tests/lists.expected @@ -7,3 +7,15 @@ true hello () world +true +true +false +false +false +false +true +false +true +false +false +true diff --git a/tests/more-tests/lists.rkt b/tests/more-tests/lists.rkt index 0fb63a8..bc49d82 100644 --- a/tests/more-tests/lists.rkt +++ b/tests/more-tests/lists.rkt @@ -9,4 +9,18 @@ (cons? '(hello)) (first '(hello)) (rest '(hello)) -(second '(hello world)) \ No newline at end of file +(second '(hello world)) + +(andmap even? '(2 4 6 8)) +(andmap even? '()) +(andmap even? '(2 4 5 8)) +(andmap even? '(5)) +(andmap even? '(1 3 5 7)) +(andmap even? '(1 3 8 7)) + +(ormap even? '(2 4 6 8)) +(ormap even? '()) +(ormap even? '(2 4 5 8)) +(ormap even? '(5)) +(ormap even? '(1 3 5 7)) +(ormap even? '(1 3 8 7)) \ No newline at end of file