これは、リストとして実装された一連のデータ型でうまく動作すると私が想像するコードの一例です。
fun newSet() = nilset;
fun isMember (k, x::xs) = if k = x then true else isMember (k, xs)
| isMember (k, nilset) = false;
問題は、リストとして実装できないことです。以下は、私のセットを実装するためのコードです。
abstype ''a set = nilset | st of ''a * ''a set
::
リストの場合、これと他のセット操作を再帰的に行うにはどうすればよいですか? そうでない場合、なぜこれが例外をスローするのですか? 使用するとこれが得られます::
:
! Type clash: pattern of type
! ''a set
! cannot have type
! ''b list
助けてくれてありがとう。