某些功能未加载到 repl 中
Certain functions not loading into repl
通过 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)))
我不明白为什么 (atom?) 没有加载。当我将 s-expression 复制粘贴到 repl 中时,它起作用了。有什么想法吗?
由于您正在取消 #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))
。
通过 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)))
我不明白为什么 (atom?) 没有加载。当我将 s-expression 复制粘贴到 repl 中时,它起作用了。有什么想法吗?
由于您正在取消 #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))
。