File: highlight.sml

package info (click to toggle)
kf6-syntax-highlighting 6.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 47,568 kB
  • sloc: xml: 197,750; cpp: 12,850; python: 3,023; sh: 955; perl: 546; ruby: 488; pascal: 393; javascript: 161; php: 150; jsp: 132; lisp: 131; haskell: 124; ada: 119; ansic: 107; makefile: 96; f90: 94; ml: 85; cobol: 81; yacc: 71; csh: 62; erlang: 54; sql: 51; java: 47; objc: 37; awk: 31; asm: 30; tcl: 29; fortran: 18; cs: 10
file content (32 lines) | stat: -rw-r--r-- 928 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
datatype Colour = R | B

datatype 'a RBtree = E | N of Colour * 'a * 'a RBtree * 'a RBtree

(* Dieses lookup funktioniert nur fuer Elemente vom Typ int *)

fun lookup (x,E) = false
  | lookup (x,N(_,y,l,r)) = 
       if x < y then lookup(x,l)
       else if y < x then lookup(x,r)
       else true

fun balance (B,x,N(R,y,N(R,z,t1,t2),t3),t4) =
       N(R,y,N(B,z,t1,t2),N(B,x,t3,t4))
  | balance (B,x,N(R,y,t1,N(R,z,t2,t3)),t4) =
       N(R,z,N(B,y,t1,t2),N(B,x,t3,t4))
  | balance (B,x,t1,N(R,y,N(R,z,t2,t3),t4)) =
       N(R,z,N(B,x,t1,t2),N(B,y,t3,t4))
  | balance (B,x,t1,N(R,y,t2,N(R,z,t3,t4))) =
       N(R,y,N(B,x,t1,t2),N(B,z,t3,t4))
  | balance t = N t

fun insert(x,t) =
   let
      fun ins E = N(R,x,E,E)
        | ins (t as N(c,y,l,r)) = 
             if x < y then balance (c,y,ins l,r)
             else if y < x then balance (c,y,l,ins r)
             else t
      val N(_,y,l,r) = ins t
   in N(B,y,l,r)
   end