私は初心者であり、使用した用語は正確ではない可能性があります。
私は持っている
type t = True | False | If of t * t * t | Int of int | Plus of t * t | GT of t * t
let isval t =
match t with
True|False -> true
| Int _ -> true
| _ -> false
eval 関数を実装したい。
let rec step t =
match isval t with
true -> raise NormalForm
| false -> match t with
If(t1, t2, t3) when t1=True -> t2
| If(t1, t2, t3) when t1=False -> t3
| Plus(t1, t2) -> t1+t2
| GT(t1, t2) -> t1>t2
| _ -> raise NormalForm;;
Plus(t1, t2) -> t1+t2
で、「この式の型は t ですが、式の型が int である必要があります」というエラーが発生します。
何が問題ですか?どうすれば直せますか?