練習問題 6.15

sum型を使って、次の型をもつ関数 f1 〜 f7 を定義しなさい。(組型の * と sum は sum のほうが強く結合します)。

(1) f1: ‘a * (‘b, ‘c) sum -> (‘a * ‘b, ‘a * ‘c) sum

解答

type ('a, 'b) sum = Left of 'a | Right of 'b;;

let f1 (a, x) =
  match x with
    Left b ->  Left (a, b)
  | Right c -> Right (a, c);;
  
let test1 = f1 (3, (Right 5)) = Right (3, 5);;

これは、以下のページを見て書いた。

Objective Caml 入門 手習い(6章)その4

あとは、よくわからん。後日を期することとする。