我是初学者,使用Real World OCaml自学OCaml。
出于某种原因,该行
maxarea = itsct_df.groupby(['FID_preproc','PLANREG_NAME'], as_index=False).Shape_Area.max()
引发错误
错误:此表达式的类型等于:(int - > int - > bool) - > bool但是预期表达类型为bool
这个例子看起来非常简单,我无法弄清楚发生了什么。似乎let contains_1 l =
if List.mem l 1 then true;;
没有评估,只是作为一个函数坐在那里?我的OCaml版本是4.05.0。任何帮助将不胜感激。
答案 0 :(得分:2)
首先,您的代码无法正常工作,因为您错过了其他情况。在OCaml中,没有if
的{{1}}意味着完全不同的东西。所以你可以把你的函数写成
else
但是,你不需要做
let contains_1 l =
if List.mem l 1 ~equal:(=) then true else false
因为整个表达式无论如何都会等于if <boolean> then true else false
。
因此,这是你正在尝试编写的内容
<boolean>
评估为
let contains_1 l =
List.mem l 1 ~equal:(=)
按预期工作:
val contains_1 : int list -> bool = <fun>
答案 1 :(得分:-3)
解决!我正在返回部分
let contains_1 l =
if List.mem l 1 ~equal=(=) then true;;
按预期工作。