1

bst(二分探索木) ユニオン型を作りたいです。

またはのいずれleafnodeです。ノードの場合、'aキーと'b値を取ります。

これは私がしました:

type 'a*'b bst = 
  | Node of 'a * 'b * ('a*'b) bst * ('a*'b) bst
  | Leaf;;

しかし、それは機能しません

どうすればいいですか?

4

3 に答える 3

4

探している構文は次のとおりです。

# type ('a, 'b) bst =                              
      | Node of 'a * 'b * ('a,'b) bst * ('a,'b) bst
      | Leaf;;                                     
type ('a, 'b) bst = Node of 'a * 'b * ('a, 'b) bst * ('a, 'b) bst | Leaf
于 2013-03-11T12:25:01.507 に答える
4

マルチパラメータ多相型の構文は次のとおりです。

type ('a, 'b) bst = 
  | Node of 'a * 'b * ('a, 'b) bst * ('a, 'b) bst
  | Leaf;;
于 2013-03-11T12:25:27.880 に答える
0

'aまた、比較演算子が必要なため、トラブルが発生する可能性があります。これが、標準ライブラリでMapおよびSetモジュールがファンクタとして実装されている理由であり、比較順序を指定できるようになっています。

ポリモーフィズムの方法に従うこと'aにした場合は、「魔法の」デフォルトの比較演算子を使用する必要がありますcompare

比較演算子を型にアタッチする方法があるため、F# では問題が異なります。

于 2013-03-27T17:29:14.773 に答える