2016-02-05 112 views
-4
(define function1 (lambda(val) 
    (if (list? val) 
    (function2 (val)) 
    ('!list)))) 

当我尝试输入“(TTT),我收到以下错误:为什么计划不允许您从另一个函数内调用函数?

application: not a procedure; 
expected a procedure that can be applied to arguments 
    given: (t t t) 
    arguments...: [none] 

我定义函数2和它的作品时,我调用自身,但我不能在function1中调用它。

+1

我提交了一个编辑来清理你的代码示例,以使它更好地使用lisp-y风格。我希望它被接受。我相信,使用更简洁的代码风格,您的语法错误实际上更容易被发现。 – verdammelt

+1

看看(可能重复)[“应用程序:不是程序”在二进制算术程序](http://stackoverflow.com/questions/19022704/application-not-a-procedure-in-binary-arithmetic-procedures )。 –

回答

5

问题是val不是函数。您应该将(function2(val))替换为(function2 val)

此外'!list也不是一个函数; if表达式的else子句也需要更正。

3

它是'!listval这不是程序。

相关问题