通过Little Schemer, 我们需要定义一些自己的功能。 我已经定义了它们,只有add1和sub1在加载后出现在repl中。我正在使用Racket v7.0。
#lang racket
(provide atom? add1 sub1)
(define atom?
(lambda (x)
(and (not (pair? x)) (not (null? x)))))
(define add1
(lambda (x)
(+ x 1)))
(define sub1
(lambda (x)
(- x 1)))
我无法弄清楚为什么不加载(原子?)。当我复制粘贴s表达式到repl时,它可以工作。有什么想法吗?
答案 0 :(得分:0)
由于取消#lang racket
和provide
的使用,正确的文件使用方式是require
。
$ ls
toys.rkt
$ racket
Welcome to Racket v6.8.
> (require "toys.rkt")
> (atom? '())
#f
因此,假设您编写了这样的程序:
#lang racket
(require "toys.rkt")
(if (atom? 'test)
'atom
'no-atom)
您保存并运行它:
$ racket program.rkt
'atom
还要注意,您可以使用R6RS并使toys
成为库。然后,您需要使用plt-r6rs --install toys.rkt
,然后使用(import (rnrs base) (toys))
。