(module scheme-names mzscheme (require (lib "string.ss") (lib "list.ss")) (provide *scm-builtins* *scm-keywords*) (define (my-keyword? str) (with-handlers ([(lambda (o) #t) (lambda (o) #t)]) (not (eval-string str)))) (define *bound* (map symbol->string (namespace-mapped-symbols (make-namespace 'initial)))) (define *keywords* (filter my-keyword? *bound*)) (define *builtins* (filter (lambda (str) (not (my-keyword? str))) *bound*)) (define *scm-builtins* *builtins*) (define *scm-keywords* *keywords*) #; (define *scm-builtins* '("abs" "acos" "angle" "append" "apply" "asin" "assq" "assv" "assoc" "atan" "boolean?" "car" "cdr" "caar" "cadr" "cdar" "cddr" "caaar" "caadr" "cadar" "caddr" "cdaar" "cdadr" "cddar" "cdddr" "caaaar" "caaadr" "caadar" "caaddr" "cadaar" "cadadr" "caddar" "cadddr" "cdaaar" "cdaadr" "cdadar" "cdaddr" "cddaar" "cddadr" "cdddar" "cddddr" "call-with-current-continuation" "call/cc" "call-with-input-file" "call-with-output-file" "call-with-values" "char?" "char=?" "char?" "char<=?" "char>=?" "char-ci=?" "char-ci?" "char-ci<=?" "char-ci>=?" "char-alphabetic?" "char-numeric?" "char-whitespace?" "char-upper-case?" "char-lower-case?" "char-ready?" "char->integer" "char-upcase" "char-downcase" "cons" "ceiling" "close-input=port" "close-output-port" "complex?" "cos" "current-input-port" "current-output-port" "denominator" "display" "dynamic-wind" "eof-object?" "eq?" "equal?" "eqv?" "eval" "even?" "exact?" "exact->inexact" "exp" "expt" "floor" "for-each" "force" "gcd" "imag-part" "inexact?" "inexact->exact" "input-port?" "integer?" "integer->char" "interaction-environment" "lcm" "length" "list" "list?" "list-ref" "list-tail" "list->string" "list->vector" "load" "log" "magnitude" "make-polar" "make-rectangular" "make-string" "make-vector" "map" "max" "min" "memq" "memv" "member" "modulo" "negative?" "newline" "not" "null?" "null-environment" "number?" "number->string" "numerator" "odd?" "open-input-file" "open-output-file" "output-port?" "pair?" "peek-char" "positive?" "procedure?" "quotient" "rational?" "rationalize" "read" "read-char" "real?" "real-part" "remainder" "reverse" "round" "scheme-report-environment" "sin" "set-car!" "set-cdr!" "sqrt" "string" "string?" "string-append" "string-copy" "string-fill!" "string-length" "string-ref" "string-set!" "string->list" "string->number" "string->symbol" "string=?" "string-ci=?" "string?" "string<=?" "string>=?" "string-ci?" "string-ci<=?" "string-ci>=?" "substring" "symbol?" "symbol->string" "tan" "transcript-on" "transcript-off" "truncate" "values" "vector" "vector?" "vector-fill!" "vector-length" "vector-ref" "vector-set!" "vector->list" "with-input-from-file" "with-output-to-file" "write" "write-char" "zero?" "=" "<" ">" "<=" ">=" "+" "*" "-" "/" )) #; (define *scm-keywords* '("=>" "and" "begin" "begin0" "case" "cond" "define" "define-macro" "define-syntax" "define-struct" "delay" "do" "else" "fluid-let" "if" "lambda" "let" "let-syntax" "let*" "letrec" "letrec-syntax" "module" "or" "provide" "quasiquote" "quote" "require" "require-for-syntax" "set!" "syntax-case" "syntax-rules" "unless" "unquote" "unquote-splicing" "when" "with-handlers")) )