如何在 Guile Scheme 中一次只读取一个表达式

How to read only one expression at a time in Guile Scheme

我正尝试在 Guile Scheme 中进行 reader 扩展。在编写此 reader 扩展时,我想使用一次只读入一个表达式的 guile 函数,例如 read-expressionread-sexp,但这些函数似乎不可用在默认命名空间中。我无法找到有关这些功能的文档,所以我不知道要导入哪些模块才能使用它们。我知道它们在 Guile 源代码中实现(在 read.c 中),分别为 scm_read_expressionscm_read_sexp。我一直假设这些函数暴露给某些 Scheme API,因此有“scm_”前缀……这个假设是否有效?无论哪种方式,在某些 Guile 模块中是否有可用的函数允许我一次只读入一个表达式?

问这个问题的时候,我误以为read会读取给定端口的所有表达式。事实上,read 只读入一个表达式,因此具有我的目的所需的行为。请参阅此处的手册条目:https://www.gnu.org/software/guile/manual/html_node/Scheme-Read.html