0
fun min [] = [] | min (h::t) = if h < (min t) then h else (min t)

上記でエラーが発生するのはなぜですか?? 助けてください!ありがとう!

エラーメッセージ:

stdIn:1.37 Error: overloaded variable not defined at type
    symbol: <
    type: 'Z list
4

2 に答える 2

1

h空のリストの場合、型がまたはなどの要素の型と互換性のない空のリストを返しますmin t

いくつかの修正:

  1. 空のリストは、最小値がない例外的なケースです。たとえば、例外を発生させる必要がありますEmpty
  2. 要素が 1 つしかないリストの基本ケースを忘れています。

したがって、関数のスケルトンは次のようになります。

fun min [] = raise Empty
  | min [x] = ...
  | min (x::xs) = ...
于 2012-10-16T16:11:26.470 に答える