我有两个功能:
let fn2 =
if "something happend" then
fn1
let rec fn1 =
if "something" then
fn2
这只是一个例子,我正在尝试做什么。有什么想法怎么做?
或者我应该将2.函数作为参数发送到1.函数?
答案 0 :(得分:6)
您需要使用let rec ... and ...
:
let rec fn1 x =
if x = "something" then
fn2 x
and fn2 x =
if x = "something else" then
fn1 x
答案 1 :(得分:0)
你也可以嵌套 wrap 你的函数并创建两个高阶函数,它们将函数作为参数并应用它。
这可能不是......像:
let fn2 fn =
if "something happend" then
fn fn2
let rec fn1 fn =
if "something" then
fn fn1
您可以拨打电话,而不是像这样打电话给您的电话:
let result = fn1 fn2
如果您希望您的功能更加明确,您可以编写它,例如:
let rec fn2 (fn:unit->unit) : unit =
if "something happend" then
fn fn2
let rec fn1 (fn:unit->unit) : unit =
if "something" then
fn fn1
但我认为kvb的答案是更好的方法,因为它更符合标准且可读。