/usr/share/axiom-20170501/src/algebra/ICARD.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 68 69 70 | )abbrev domain ICARD IndexCard
++ Author: Mark Botch
++ Description:
++ This domain implements a container of information about the AXIOM library
IndexCard() : SIG == CODE where
SIG ==> OrderedSet with
elt : (%,Symbol) -> String
++ elt(ic,s) selects a particular field from \axiom{ic}. Valid fields
++ are \axiom{name, nargs, exposed, type, abbreviation, kind, origin,
++ params, condition, doc}.
display : % -> Void
++ display(ic) prints a summary of information contained in \axiom{ic}.
fullDisplay : % -> Void
++ fullDisplay(ic) prints all of the information contained in \axiom{ic}.
coerce : String -> %
++ coerce(s) converts \axiom{s} into an \axiom{IndexCard}. Warning: if
++ \axiom{s} is not of the right format then an error will occur
CODE ==> add
x<y==(x pretend String) < (y pretend String)
x=y==(x pretend String) = (y pretend String)
display(x) ==
name : OutputForm := dbName(x)$Lisp
type : OutputForm := dbPart(x,4,1$Lisp)$Lisp
output(hconcat(name,hconcat(" : ",type)))$OutputPackage
fullDisplay(x) ==
name : OutputForm := dbName(x)$Lisp
type : OutputForm := dbPart(x,4,1$Lisp)$Lisp
origin:OutputForm :=
hconcat(alqlGetOrigin(x$Lisp)$Lisp,alqlGetParams(x$Lisp)$Lisp)
fromPart : OutputForm := hconcat(" from ",origin)
condition : String := dbPart(x,6,1$Lisp)$Lisp
ifPart : OutputForm :=
condition = "" => empty()
hconcat(" if ",condition::OutputForm)
exposed? : String := SUBSTRING(dbPart(x,3,1)$Lisp,0,1)$Lisp
exposedPart : OutputForm :=
exposed? = "n" => " (unexposed)"
empty()
firstPart := hconcat(name,hconcat(" : ",type))
secondPart := hconcat(fromPart,hconcat(ifPart,exposedPart))
output(hconcat(firstPart,secondPart))$OutputPackage
coerce(s:String): % == (s pretend %)
coerce(x): OutputForm == (x pretend String)::OutputForm
elt(x,sel) ==
s := PNAME(sel)$Lisp pretend String
s = "name" => dbName(x)$Lisp
s = "nargs" => dbPart(x,2,1$Lisp)$Lisp
s = "exposed" => SUBSTRING(dbPart(x,3,1)$Lisp,0,1)$Lisp
s = "type" => dbPart(x,4,1$Lisp)$Lisp
s = "abbreviation" => dbPart(x,5,1$Lisp)$Lisp
s = "kind" => alqlGetKindString(x)$Lisp
s = "origin" => alqlGetOrigin(x)$Lisp
s = "params" => alqlGetParams(x)$Lisp
s = "condition" => dbPart(x,6,1$Lisp)$Lisp
s = "doc" => dbComments(x)$Lisp
error "unknown selector"
|