为什么我的程序不产生任何输出?
Why doesn't my program produce any output?
我想编写一个 Scheme 函数 numofatoms
来确定列表中元素的数量。
例如,(numOfSymbols '((1 3) 7 (4 (5 2) ) )
应该 return 6
.
我目前拥有的:
;(1 3) 7 (4(5 2)) the list
(define (numofatoms lst) ;defining a numofatoms function
(define (flatten x) ;defining a flatten function
(cond ((null? x) '())
((pair? x) (append (flatten (car x)) (flatten (cdr x))))
(else (list x))))
(length (flatten lst)))
(numofatoms '((1 3) 7 (4(5 2)))); calling the function
定义 numofatoms
和 flatten
后,我没有看到任何错误,但程序无法运行。它不产生任何输出。
如果您加载发布的代码并从 REPL 调用 numofatoms
,则发布的代码工作正常。我假设 OP 要么从 REPL 调用 load
,要么从命令行 运行 将代码作为脚本调用,当其中任何一个完成时,OP 看不到任何输出。 REPL 评估并 打印 结果(因此 P),但是当您 load
代码时,不一定会发生什么。
当在 REPL 中计算表达式时,将打印表达式的计算结果。当文件加载到 REPL 时,可能期望文件中最终表达式的值将被打印,但这种期望不会得到回报。
load
程序 未 为 R6RS 标准化;这里它是特定于实现的,细节取决于实现。对于 Chez Scheme,load
returns 一个 未指定的值 ,因此当文件成功加载时,不应期望看到任何有用的东西。
R5RS 和 R7RS 都在标准中描述了 load
过程,但都未指定是否打印文件中表达式的计算结果。
Scheme 程序的任何脚本机制的细节完全取决于实现。但是,当您 运行 来自命令行的脚本时,您不在 REPL 中,因此同样不应期望文件中各种形式的评估结果将打印到终端 window.
如果你想让一个 Scheme 文件或脚本打印一些东西,你必须让它这样做。如果将发布文件的最后一行更改为 (display (numofatoms '((1 3) 7 (4(5 2))))) (newline)
,程序将在 运行.
时显示调用 numofatoms
的结果
我想编写一个 Scheme 函数 numofatoms
来确定列表中元素的数量。
例如,(numOfSymbols '((1 3) 7 (4 (5 2) ) )
应该 return 6
.
我目前拥有的:
;(1 3) 7 (4(5 2)) the list
(define (numofatoms lst) ;defining a numofatoms function
(define (flatten x) ;defining a flatten function
(cond ((null? x) '())
((pair? x) (append (flatten (car x)) (flatten (cdr x))))
(else (list x))))
(length (flatten lst)))
(numofatoms '((1 3) 7 (4(5 2)))); calling the function
定义 numofatoms
和 flatten
后,我没有看到任何错误,但程序无法运行。它不产生任何输出。
如果您加载发布的代码并从 REPL 调用 numofatoms
,则发布的代码工作正常。我假设 OP 要么从 REPL 调用 load
,要么从命令行 运行 将代码作为脚本调用,当其中任何一个完成时,OP 看不到任何输出。 REPL 评估并 打印 结果(因此 P),但是当您 load
代码时,不一定会发生什么。
当在 REPL 中计算表达式时,将打印表达式的计算结果。当文件加载到 REPL 时,可能期望文件中最终表达式的值将被打印,但这种期望不会得到回报。
load
程序 未 为 R6RS 标准化;这里它是特定于实现的,细节取决于实现。对于 Chez Scheme,load
returns 一个 未指定的值 ,因此当文件成功加载时,不应期望看到任何有用的东西。
R5RS 和 R7RS 都在标准中描述了 load
过程,但都未指定是否打印文件中表达式的计算结果。
Scheme 程序的任何脚本机制的细节完全取决于实现。但是,当您 运行 来自命令行的脚本时,您不在 REPL 中,因此同样不应期望文件中各种形式的评估结果将打印到终端 window.
如果你想让一个 Scheme 文件或脚本打印一些东西,你必须让它这样做。如果将发布文件的最后一行更改为 (display (numofatoms '((1 3) 7 (4(5 2))))) (newline)
,程序将在 运行.
numofatoms
的结果