gpt4 book ai didi

scheme - 从用户输入评估表达式的问题

转载 作者:行者123 更新时间:2023-12-01 01:20:51 26 4
gpt4 key购买 nike

我正在尝试创建一个递归定义来读取和执行用户表达式,例如 (3 + 5) .一切正常,除了算术符号的一个问题。

我设法在一个更简单的例子中复制了错误:

(define v '(1 + 3))

((cadr v) 2 4)
(cadr v)+符号,但由于某种原因,该过程不能在后面的两个参数上执行。我错过了什么吗?

最佳答案

我认为那是因为

(cadr v)

返回 '+不是 + (文字 + 不是 + 函数)。

在将其应用于参数之前,您需要对其进行评估。

这应该有效:
((eval (cadr v)) 2 4)
^evaluates the '+ to +

编辑
这在交互模式下在 Racket 中起作用。

我不太确定有什么区别,但是使它在 Racket (脚本)中以 r5rs 模式工作:
#lang r5rs

;required by r5rs
(define user-initial-environment (scheme-report-environment 5))

(define v '(1 + 2))

;eval expects a quoted expression
;(it seems that if it's a function it has to have arguments too)
;and evaluation environment.
((eval (cadr v) user-initial-environment) 2 4)

关于scheme - 从用户输入评估表达式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9349123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com