X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Flambdakey-v1.0%2Fao_lambdakey_const.scheme;h=a37e1a2b3cc5c5dc820b9ae084ada2fad46bc43b;hb=aeb07f2b94b0121d4e5a6ce175ce4e013d6557cf;hp=503732723e7088880858e80a8a1956a1af98f423;hpb=a4c9233aa8a2f1b1dca6580d6d6275b48c40f01f;p=fw%2Faltos diff --git a/src/lambdakey-v1.0/ao_lambdakey_const.scheme b/src/lambdakey-v1.0/ao_lambdakey_const.scheme index 50373272..a37e1a2b 100644 --- a/src/lambdakey-v1.0/ao_lambdakey_const.scheme +++ b/src/lambdakey-v1.0/ao_lambdakey_const.scheme @@ -49,7 +49,7 @@ ) 'append) -(append '(a b c) '(d e f) '(g h i)) +(append '(a) '(b)) ; ; Define a variable without returning the value @@ -66,7 +66,7 @@ (macro (a . b) ; check for alternate lambda definition form - (cond ((list? a) + (cond ((pair? a) (set! b (cons lambda (cons (cdr a) b))) (set! a (car a)) @@ -92,26 +92,86 @@ 'define ) + ; boolean operators + +(begin + (def! or + (macro a + (def! _or + (lambda (a) + (cond ((null? a) #f) + ((null? (cdr a)) + (car a)) + (else + (list + cond + (list + (car a)) + (list + 'else + (_or (cdr a)) + ) + ) + ) + ) + ) + ) + (_or a))) + 'or) + + ; execute to resolve macros + +(or #f #t) + +(begin + (def! and + (macro a + (def! _and + (lambda (a) + (cond ((null? a) #t) + ((null? (cdr a)) + (car a)) + (else + (list + cond + (list + (car a) + (_and (cdr a)) + ) + ) + ) + ) + ) + ) + (_and a) + ) + ) + 'and) + + ; execute to resolve macros + +(and #t #f) + ; basic list accessors -(define (caar l) (car (car l))) +(define (caar a) (car (car a))) -(define (cadr l) (car (cdr l))) +(define (cadr a) (car (cdr a))) -(define (cdar l) (cdr (car l))) +; (define (cdar a) (cdr (car a))) ; (if ) ; (if