diff --git a/TODO b/TODO index ec64c552..e9e9954f 100644 --- a/TODO +++ b/TODO @@ -32,6 +32,7 @@ v vector-length v vector-ref v vector-set! v vector? -... possibly also: any, each, unquote-splicing, ... -** implement extras: (gensym) +v procedure? +** any, each, unquote-splicing, ... +** implement extras: v (gensym) ** hook-up sc-expand, see guile-1.0?: scheme:eval-transformer diff --git a/scm.mes b/scm.mes index 73f28a8b..c8768ecd 100755 --- a/scm.mes +++ b/scm.mes @@ -24,6 +24,11 @@ (define (defined? x) (assq x (current-module))) +(define (procedure? p) + (cond ((builtin? p) #t) + ((pair? p) (eq? (car p) 'lambda)) + (#t #f))) + (define (list . rest) rest) (define (vector . rest) (list->vector rest)) (define assv assq) diff --git a/test.mes b/test.mes index 5d004d64..476fbe86 100644 --- a/test.mes +++ b/test.mes @@ -260,4 +260,12 @@ (display ((lambda (x) x) (values 1 2 3))) (newline))) +(display "(procedure? builtin?: ") +(display (procedure? builtin?)) +(newline) + +(display "(procedure? procedure?): ") +(display (procedure? procedure?)) +(newline) + '()