|
|
1.1 ! root 1: (* depth-first state buffer -- implements a stack *) ! 2: ! 3: structure DF : BUFFER = ! 4: struct ! 5: type 'a buffer = 'a list ! 6: exception EMPTY ! 7: val empty = [] ! 8: fun get [] = raise EMPTY ! 9: | get(x::l) = (x,l) ! 10: fun put(x,l) = x::l ! 11: end ! 12: ! 13: ! 14: (* breadth-first state buffer -- implements an applicative queue *) ! 15: ! 16: structure BF : BUFFER = ! 17: struct ! 18: type 'a buffer = 'a list * 'a list ! 19: exception EMPTY ! 20: val empty = ([],[]) ! 21: fun get([],[]) = raise EMPTY ! 22: | get(a::r,l) = (a,(r,l)) ! 23: | get([],l) = get(rev l,[]) ! 24: fun put(x,(m,l)) = (m,x::l) ! 25: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.