datatype 'label btree = Empty | Node of 'label * 'label btree * 'label btree; fun lower(nil) = nil | lower(c::cs) = (Char.toLower c)::lower(cs); fun strLT(x,y) = implode(lower(explode x)) < implode(lower(explode y)); fun lookup lt Empty x = false | lookup lt (Node(y,left,right)) x = if lt(x,y) then lookup lt left x else if lt(y,x) then lookup lt right x else (* x=y *) true; val t = Node("ML", Node("as", Node("a",Empty,Empty), Node("in",Empty,Empty) ), Node("types",Empty,Empty) ); lookup strLT t "function";