2017-10-16 3 views
0

Dies ist meine Funktion, dieMapping über binären Baum

type 'a btree = Empty 
      |Node of 'a * 'a btree * 'a btree 

let rec treemap t f = match t with 
    |Empty -> Empty 
    |Node(root,left,right)-> Node(root f, treemap left f, treemap right f)     

Die Art der Funktion sein muss, über einen binären Baum Karte:

treemap: 'a btree -> ('a ->'b) -> 'b tree 

aber meine Funktion dieser Art zurückkehrt statt:

val treemap : ('a -> 'b) btree -> 'a -> 'b btree 
+0

Am besten wäre es, auch den Typkonstruktor geben für 'btree' in Ihrem Quellcode, um es einfacher für andere zu beantworten, auch wenn es möglich ist, herauszufinden, was es sein sollte . – Mars

+0

Ich habe den Typkonstruktor hinzugefügt –

Antwort

3

Sie scheinen die Funktion Anwendung umgeschaltet zu haben. root f sollte f root sein:

let rec treemap t f = match t with 
    | Empty -> Empty 
    | Node (root, left, right) -> Node (f root, treemap left f, treemap right f) 
Verwandte Themen