0

functorsStandardMLでの使用法を学ぼうとしています。次のコードを記述しましたが、エラーが発生し続けますError: unmatched structure specification: Element。誰かが私にエラーを指摘してもらえますか?私はそれを見つけることができませんでした:

signature SET_ELEMENT =
 sig
   type element
   val equal: element -> element -> bool
 end

signature SET =
 sig
   type set
   structure Element : SET_ELEMENT

   val empty: set
   val member: Element.element -> set -> bool
 end

functor Set (Element:SET_ELEMENT) :> SET =
  struct
    type element = Element.element
    type set = element list
    val empty = [];

    fun member x [] = false
      | member x (y::ys) = Element.equal x y orelse member x ys;
  end
4

1 に答える 1

1

Elementの署名で呼び出される構造を宣言しましたSETElementしかし、ファンクターによって出力される構造体で呼び出される構造体を定義していません。

Elementファンクターへの入力と同じであることを宣言する行を追加するだけです。

functor Set (Element:SET_ELEMENT) :> SET =
  struct
    structure Element = Element
    type element = Element.element
    type set = element list
    val empty = [];

    fun member x [] = false
      | member x (y::ys) = Element.equal x y orelse member x ys;
  end
于 2012-09-18T19:35:55.400 に答える