如何解决为什么 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 举报,一经查实,本站将立刻删除。