From d75c913a514c3a4299502a93d3025b03d2320109 Mon Sep 17 00:00:00 2001 From: Masaya Tojo Date: Fri, 20 Nov 2020 13:33:07 +0900 Subject: wip27 --- vikalpa/prelude.scm | 145 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 127 insertions(+), 18 deletions(-) (limited to 'vikalpa') diff --git a/vikalpa/prelude.scm b/vikalpa/prelude.scm index 874614d..264773d 100644 --- a/vikalpa/prelude.scm +++ b/vikalpa/prelude.scm @@ -17,7 +17,7 @@ ;;; along with Vikalpa. If not, see . (define-module (vikalpa prelude) - #:export (atom? natural? size implies prelude) + #:export (atom? size implies natural? prelude) #:use-module (vikalpa)) (define (atom? x) @@ -41,17 +41,8 @@ (if x (implies y z rest ...) #t)))) (define-system prelude () - (define-primitive-function natural? (x)) - (define-primitive-function equal? (x y)) - (define-primitive-function atom? (x)) - (define-primitive-function cons (x y)) - (define-primitive-function car (x)) - - (define-primitive-function cdr (x)) - (define-primitive-function size (x)) - (define-primitive-function not (x)) - (define-primitive-function < (x y)) - + (define-function atom? (x) + (not (pair? x))) (define-syntax-rules list () ((list) '()) ((list x . y) (cons x (list . y)))) @@ -71,7 +62,7 @@ ((implies x y) (if x y #t)) ((implies x y z . rest) (if x (implies y z . rest) #t))) - + (define-axiom equal-same (x) (equal? (equal? x x) '#t)) (define-axiom equal-swap (x y) @@ -93,24 +84,142 @@ (equal? (if x y z) y) (equal? (if x y z) z))) (define-axiom if-true (x y) - (equal? (if '#f x y) y)) + (equal? (if '#t x y) x)) (define-axiom if-false (x y) (equal? (if '#f x y) y)) (define-axiom if-same (x y) (equal? (if x y y) y)) - (define-axiom natural/size (x) + (define-axiom natural?/size (x) (equal? (natural? (size x)) '#t)) - (define-axiom size/car (x) + (define-axiom