2

この例では、すべてが整数であると仮定します。また、関数がすべてのケースを考慮していないことにコンパイラが怒っていることも承知しています。

これら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

宿題として、試したコードを見せて、何がうまくいかないかを言うのがルールだと思います。そうでなければ、問題を解決するだけでコメントするのは難しいです。

f1ただし、との両方が部分的であるという事実は、f2探しているものを理解していると仮定すると、かなり大きなヒントになると思います ( と に似た任意の 2 つの関数に対してこれを実行できる高階関数f1) f2

于 2012-10-22T00:36:22.227 に答える