评估用户定义函数的算法

时间:2014-04-10 17:27:53

标签: algorithm

您好我有一些功课包括扩展lisp解释器。我们将使用预先评估的参数(例如,例如< =)和三个执行自己评估的基元(例如if)来构建三个基元。 我超越了职责的召唤,在这个练习的范围内创造了唯一有趣的功能:( defun)[它是定义用户功能的常用lisp关键字]。

我想知道我的用于管理用户定义函数调用的算法是否值得。

在伪代码中,这里是:

get list of parameters # (x y z)
get list of arguments  # (1 2 3)
get body of function   # (+ x (* y z))
for each parameter, arg     # x
  body = replace(parameter, argument, body) # (+ 1 (* y z))
                                            # (+ 1 (* 2 z))
                                            # (+ 1 (* 2 3))
eval(body)                                  # 7

有没有更好的方法来实现这一目标? 感谢。

编辑:replace()是一个在body的子列表上递归的函数。

1 个答案:

答案 0 :(得分:0)

我从来没有找到过更好的,没有人提出更好的建议,这个问题没有引起任何兴趣,而且我正在横冲直撞地关闭我打开的问题,所以答案是:

我的算法足够好了。