diff options
Diffstat (limited to 'src/algebra')
-rw-r--r-- | src/algebra/kl.spad.pamphlet | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/algebra/kl.spad.pamphlet b/src/algebra/kl.spad.pamphlet index f9b26e86..b2ba8cad 100644 --- a/src/algebra/kl.spad.pamphlet +++ b/src/algebra/kl.spad.pamphlet @@ -58,12 +58,13 @@ SortedCache(S:CachableSet): Exports == Implementation where ++ It returns x with an integer associated with it. Implementation ==> add + import Reference List S shiftCache : (List S, N) -> Void insertInCache: (List S, List S, S, N) -> S - cach := [nil()]$Record(cche:List S) + cach := ref(nil$List(S)) - cache() == cach.cche + cache() == deref cach shiftCache(l, n) == for x in l repeat setPosition(x, n + position x) @@ -71,7 +72,7 @@ SortedCache(S:CachableSet): Exports == Implementation where clearCache() == for x in cache repeat setPosition(x, 0) - cach.cche := nil() + setref(cach,nil$List(S)) void enterInCache(x:S, equal?:S -> Boolean) == @@ -82,7 +83,7 @@ SortedCache(S:CachableSet): Exports == Implementation where return y scan := rest scan setPosition(x, 1 + #cache()) - cach.cche := concat(cache(), x) + setref(cach,concat(cache(), x)) x enterInCache(x:S, triage:(S, S) -> Integer) == @@ -96,13 +97,13 @@ SortedCache(S:CachableSet): Exports == Implementation where scan := rest scan pos := position y setPosition(x, pos + DIFF) - cach.cche := concat(cache(), x) + setref(cach, concat(cache(), x)) x insertInCache(before, after, x, pos) == if ((pos+1) = position first after) then shiftCache(after, DIFF) setPosition(x, pos + (((position first after) - pos)::N quo 2)) - cach.cche := concat(before, concat(x, after)) + setref(cach, concat(before, concat(x, after))) x @ |