2

出于示例的目的,我们假设一切都是整数。另外,我知道编译器会因为这些函数不能解决所有情况而生气。

假设我有这两个功能:

let f1 = function 
    | a -> b;;

let f2 = function
    | c -> d;;

有什么办法可以让我做到这一点:

    | a -> b;;
    | c -> d;;

通过将 f1 和 f2 放在一起(以类似于连接 2 个列表的方式)而不明确地将它们硬编码在一起?

4

2 回答 2

2
let concat_funs f1 f2 x =
  try f1 x
  with Match_failure _ -> f2 x

它是关联的,但不是可交换的。

于 2012-10-22T10:54:14.480 回答
0

对于家庭作业,我认为规则是您应该展示一些您尝试过的代码并说出似乎出了什么问题。否则很难在不解决问题的情况下发表评论。

但是,我认为f1f2都是部分的事实可能是一个很大的提示,假设我了解您正在寻找的内容(一个高阶函数,可以对类似于f1and的任何两个函数执行此操作f2)。

于 2012-10-22T00:36:22.227 回答