X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Flambdakey-v1.0%2Fao_lambdakey_const.scheme;h=a37e1a2b3cc5c5dc820b9ae084ada2fad46bc43b;hb=2f87e182d9f0b3c2856f62149371ad70b16148cf;hp=d0c0e57895d54c883ddbd82f8507bee22b7b5076;hpb=09ea349f5b37e257e8ca23ead493ba1694395530;p=fw%2Faltos diff --git a/src/lambdakey-v1.0/ao_lambdakey_const.scheme b/src/lambdakey-v1.0/ao_lambdakey_const.scheme index d0c0e578..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,28 +92,86 @@ 'define ) - ; basic list accessors + ; boolean operators -(define (caar l) (car (car l))) +(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) -(define (cadr l) (car (cdr l))) + ; execute to resolve macros -(define (cdar l) (cdr (car l))) +(or #f #t) -(define (caddr l) (car (cdr (cdr l)))) +(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 a) (car (car a))) + +(define (cadr a) (car (cdr a))) + +; (define (cdar a) (cdr (car a))) ; (if ) ; (if string a))) -(display "apply\n") -(apply cons '(a b)) - (define map (lambda (a . b) - (define (args b) + (define (_a b) (cond ((null? b) ()) (else - (cons (caar b) (args (cdr b))) + (cons (caar b) (_a (cdr b))) ) ) ) - (define (next b) + (define (_n b) (cond ((null? b) ()) (else - (cons (cdr (car b)) (next (cdr b))) + (cons (cdr (car b)) (_n (cdr b))) ) ) ) - (define (domap b) + (define (_d b) (cond ((null? (car b)) ()) (else - (cons (apply a (args b)) (domap (next b))) + (cons (apply a (_a b)) (_d (_n b))) ) ) ) - (domap b) + (_d b) ) ) (map cadr '((a b) (d e) (g h))) -(define for-each (lambda (a . b) - (apply map a b) - #t)) - -(for-each display '("hello" " " "world" "\n")) - (define (newline) (write-char #\newline)) (newline)