为什么 Monkey repl 在我的程序中恐慌?

问题描述

我用 Monkey PL 编写了一个简单的程序(请参阅 https://interpreterbook.com/ 中的规范):

let fib = fn(x){
  if(x>-1){
    if(x<2){return x}
    fib(x-1)+fib(x-2)
  }   
}

let max = fn(x,y){if(x>y){x} else {}}

let simple_faulhaber  = fn(x){
  if(x==0){
      return 0
  }
  if(x>0){
    x + simple_faulhaber(x-1)
  }
}

在 repl 中测试我的函数时,似乎一切正常:

>> fib(13)
233
>> max(3,2)
3
>> simple_faulhaber(13)
91
max(simple_faulhaber(13),fib(13))*2

但是,当我在 repl 中要求对 max(simple_faulhaber(13),fib(13))*2 求值时,求值器会恐慌:

>> max(simple_faulhaber(13),fib(13))*2
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x4b7d57]

谁能给我解释一下,为什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)