如果给定了不合适的参数,我想尽早退出某个函数。Javascript中的命令式解决方案很优雅:
arg=>{
if(arg>limit) return 42;
//perform complex operations
return x+y
}
ReasonmL作为一种功能语言没有return
,因此我将所有内容都填充为单个表达式:
arg=>{
let helper=()=>{
//complex operations here
; x+y
}
(arg>limit) ? 42 : helper()
}
现在,此方法有效,但我不想只返回42,而是要塞入Js.Log("!CORNER CASE!")
中。我怎样才能做到这一点?在C语言中,我可以编写(arg>limit) ? (Js_Log("..."),42) : helper()
,但是在ReasonmL中,这将成为一个元组并且无法编译。
OCaml可以begin printf "msg" ; 42 end
做,但是分号对我不起作用,原因是:(Js.log("TEST");42)
-无法编译!
或者,在ReasonmL中,我需要K组合器。