/usr/share/axiom-20170501/src/algebra/RESULT.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | )abbrev domain RESULT Result
++ Author: Didier Pinchon and Mike Dewar
++ Date Created: 8 April 1994
++ Date Last Updated: 28 June 1994
++ Description:
++ A domain used to return the results from a call to the NAG
++ Library. It prints as a list of names and types, though the user may
++ choose to display values automatically if he or she wishes.
Result() : SIG == CODE where
O ==> OutputForm
SIG ==> TableAggregate(Symbol,Any) with
showScalarValues : Boolean -> Boolean
++ showScalarValues(true) forces the values of scalar components to be
++ displayed rather than just their types.
showArrayValues : Boolean -> Boolean
++ showArrayValues(true) forces the values of array components to be
++ displayed rather than just their types.
finiteAggregate
CODE ==> Table(Symbol,Any) add
-- Constant
colon := ": "::Symbol::O
elide := "..."::Symbol::O
-- Flags
showScalarValuesFlag : Boolean := false
showArrayValuesFlag : Boolean := false
cleanUpDomainForm(d:SExpression):O ==
not list? d => d::O
#d=1 => (car d)::O
-- If the car is an atom then we have a domain constructor, if not
-- then we have some kind of value. Since we often can't print these
-- ****ers we just elide them.
not atom? car d => elide
prefix((car d)::O,[cleanUpDomainForm(u) _
for u in destruct cdr(d)]$List(O))
display(v:Any,d:SExpression):O ==
not list? d => error "Domain form is non-list"
#d=1 =>
showScalarValuesFlag => objectOf v
cleanUpDomainForm d
car(d) = convert("Complex"::Symbol)@SExpression =>
showScalarValuesFlag => objectOf v
cleanUpDomainForm d
showArrayValuesFlag => objectOf v
cleanUpDomainForm d
makeEntry(k:Symbol,v:Any):O ==
hconcat [k::O,colon,display(v,dom v)]
coerce(r:%):O ==
bracket [makeEntry(key,r.key) for key in reverse! keys(r)]
showArrayValues(b:Boolean):Boolean == showArrayValuesFlag := b
showScalarValues(b:Boolean):Boolean == showScalarValuesFlag := b
|