diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/i-analy.boot | 4 | ||||
-rw-r--r-- | src/interp/i-eval.boot | 2 | ||||
-rw-r--r-- | src/interp/i-object.boot | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/interp/i-analy.boot b/src/interp/i-analy.boot index 6dbd19fe..cfd483e5 100644 --- a/src/interp/i-analy.boot +++ b/src/interp/i-analy.boot @@ -633,6 +633,10 @@ conceptualType type == categoryForm?(type) => $Category $Domain +++ Returns true is `t' conceptually describes a domain or package. +isConceptualCategory: %Mode -> %Boolean +isConceptualCategory t == + t = $Type or t = $Category or t = $Domain or categoryForm? t bottomUpType(t, type) == mode := conceptualType type diff --git a/src/interp/i-eval.boot b/src/interp/i-eval.boot index d8284829..fa8729dc 100644 --- a/src/interp/i-eval.boot +++ b/src/interp/i-eval.boot @@ -294,7 +294,7 @@ getArgValue1(a,t) == getMappingArgValue(a,t,m) t' := coerceOrRetract(t',t) t' and getValueNormalForm t' - systemErrorHere '"getArgValue" + systemErrorHere '"getArgValue1" getArgValue2(a,t,se?,opName) == se? and (objMode(getValue a) ^= t) => diff --git a/src/interp/i-object.boot b/src/interp/i-object.boot index 5cbcd2ca..5a793c2c 100644 --- a/src/interp/i-object.boot +++ b/src/interp/i-object.boot @@ -109,7 +109,9 @@ getValueNormalForm obj == atom val => val [op,:argl] := val op = "WRAPPED" => MKQ argl - IDENTP op and isConstructorName op => instantiationNormalForm(op,argl) + IDENTP op and isConstructorName op => + isConceptualCategory objMode obj => instantiationNormalForm(op,argl) + MKQ val -- what else can it be? Don't know; leave it alone. val |