1

これは私が作成するよりも簡単なはずだと思いますが、セットをリストに変更する必要があるこの関数に問題があります。

fun explode(st(x, xs)) =
    let
        val listTemp = []
    in
        if isEmpty(xs) then listTemp::x else explode(xs)::x
    end
  | explode(nilset) = [];

からに移動しようとしていると言って、タイプの衝突が発生し''a list listてい''a listます。どんな助けでも大歓迎です。

編集:''リスト->''リストリスト...おっと。

4

1 に答える 1

4

演算子の左側のオペランドは::要素で、右側のオペランドはリストである必要があります。左のオペランドとしてリストを使用し、右のオペランドとして要素を使用しています。それがタイプエラーです。

生成されたリストの順序は重要ではないと仮定すると、オペランドを切り替えるだけで済みます。それが重要な場合でも、オペランドを切り替えてList.rev、完全なリストを作成した後、結果のリストを逆にするために使用できます。

于 2012-11-08T00:16:33.027 に答える