aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/algebra/domain.spad.pamphlet2
-rw-r--r--src/interp/database.boot12
2 files changed, 12 insertions, 2 deletions
diff --git a/src/algebra/domain.spad.pamphlet b/src/algebra/domain.spad.pamphlet
index 47679554..3984223c 100644
--- a/src/algebra/domain.spad.pamphlet
+++ b/src/algebra/domain.spad.pamphlet
@@ -111,7 +111,7 @@ ConstructorCategory(): Category == OperatorCategory Identifier with
kind x == getConstructorKind(x)$Lisp
arity x == getConstructorArity(x)$Lisp
dualSignature x == getDualSignatureFromDB(x)$Lisp
- operations x == getConstructorOperationsFromDB(x)$Lisp
+ operations x == getOperationAlistFromLisplib(x)$Lisp
@
diff --git a/src/interp/database.boot b/src/interp/database.boot
index 31daea4b..8b3b9e1c 100644
--- a/src/interp/database.boot
+++ b/src/interp/database.boot
@@ -678,12 +678,22 @@ markUnique x ==
RPLACD(x,[u,:rest x])
rest x
+
+++ Tail of most function descriptors.
+$FunctionDescriptorTail == '(NIL T ELT)
+
+++ Return the list of overload sets of operations exported by
+++ the constructor `x'. This function differs from
+++ getConstructorOperationsFromDB in that it uncompresses the
+++ common tail of most function descriptors. That compression
+++ was done when the overload sets were saved in the
+++ operation database.
getOperationAlistFromLisplib x ==
u := getConstructorOperationsFromDB x
-- u := removeZeroOneDestructively u
null u => u -- this can happen for Object
CAAR u = '_$unique => rest u
- f:= addConsDB '(NIL T ELT)
+ f:= addConsDB $FunctionDescriptorTail
for [op,:sigList] in u repeat
for items in tails sigList repeat
[sig,:r] := first items