2014-09-08 1 views
1

나는 공공 코드 (http://en.wikibooks.org/wiki/F_Sharp_Programming/Advanced_Data_Structures)F #을/FSharp 일반 유형 wikibooks.org

기반 Fsharp의 기본 레드/블랙 트리를 구현하기 위해 노력하고있어하지만 컴파일에 문제가 실행 계속 최종 서명 시간 : 일을하지하지만 난 그것을 추가하려고 한 모든 것을 :

type 'a BinaryTree(inner : 'a tree) = 
    member this.head = Tree.head inner 
    member this.left = BinaryTree(Tree.left inner) 
    member this.right = BinaryTree(Tree.right inner) 
    member this.exists item = Tree.exists item inner 
    member this.insert item = BinaryTree(Tree.insert item inner) 
    member this.print() = Tree.print 0 inner 
    static member empty = BinaryTree<'a>(E) 

구체적가 나에게 " '비교는'유형의 매개 변수는 제약이 없습니다"라는 오류를 제공합니다. 내가 뭘 놓치고 있니?

답변

5

해보십시오 당신이 그것을했다

+0

클래스 선언에서 '접두사'일반적인 표기법을 사용하는 경우 형식 매개 변수에 대한 제약 조건을 지정하는 방법이 없다고 생각

type BinaryTree<'a when 'a : comparison> (inner : 'a tree) = 

같은 형식 선언을 다시 쓰기. 설명 : '접두사'일반 표기법이란 무엇을 의미하며 다른 가능성은 무엇입니까? – BioInfoBrett

+2

@BioInfoBrett : prefix는'type 'a BinaryTree (/*...*/) ='이고 다른 하나는'type BinaryTree <'a> (/*...*/) ='두번째 옵션은'when 예제에서와 같이 'a : comparison'. – phoog