考虑以下错误代码:
fun x =
if (null x) then 0
else (take 50 x) : (fun (drop 50 x))
我注意到,我可以毫无问题地将它加载到 ghci 中,这就是问题所在。
当我尝试评估此功能时,该程序只会检索我一个错误。
关于 if ... then ... else 表达式的默认推理规则,由于两个分支显式检索不同的类型,为什么可以加载(即编译)此代码?我的意思是,为什么编译器无法确定这段代码格式错误?
注意:当然,如果我为此函数添加了正确的类型注释,正如预期的那样,它将被拒绝,但据我所知,如果没有类型注释,它也应该被拒绝。