/usr/share/axiom-20170501/src/algebra/SEXCAT.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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | )abbrev category SEXCAT SExpressionCategory
++ Author: S.M.Watt
++ Date Created: July 1987
++ Date Last Modified: 23 May 1991
++ Description:
++ This category allows the manipulation of Lisp values while keeping
++ the grunge fairly localized.
-- The coerce to expression lets the
-- values be displayed in the usual parenthesized way (displaying
-- them as type Expression can cause the formatter to die, since
-- certain magic cookies are in unexpected places).
-- SMW July 87
SExpressionCategory(Str, Sym, Int, Flt, Expr) : Category == SIG where
Str : SetCategory
Sym : SetCategory
Int : SetCategory
Flt : SetCategory
Expr : SetCategory
SIG ==> SetCategory with
eq : (%,%) -> Boolean
++ eq(s, t) is true if EQ(s,t) is true in Lisp.
null? : % -> Boolean
++ null?(s) is true if s is the S-expression ().
atom? : % -> Boolean
++ atom?(s) is true if s is a Lisp atom.
pair? : % -> Boolean
++ pair?(s) is true if s has is a non-null Lisp list.
list? : % -> Boolean
++ list?(s) is true if s is a Lisp list, possibly ().
string? : % -> Boolean
++ string?(s) is true if s is an atom and belong to Str.
symbol? : % -> Boolean
++ symbol?(s) is true if s is an atom and belong to Sym.
integer? : % -> Boolean
++ integer?(s) is true if s is an atom and belong to Int.
float? : % -> Boolean
++ float?(s) is true if s is an atom and belong to Flt.
destruct : % -> List %
++ destruct((a1,...,an)) returns the list [a1,...,an].
string : % -> Str
++ string(s) returns s as an element of Str.
++ Error: if s is not an atom that also belongs to Str.
symbol : % -> Sym
++ symbol(s) returns s as an element of Sym.
++ Error: if s is not an atom that also belongs to Sym.
integer : % -> Int
++ integer(s) returns s as an element of Int.
++ Error: if s is not an atom that also belongs to Int.
float : % -> Flt
++ float(s) returns s as an element of Flt;
++ Error: if s is not an atom that also belongs to Flt.
expr : % -> Expr
++ expr(s) returns s as an element of Expr;
++ Error: if s is not an atom that also belongs to Expr.
convert : List % -> %
++ convert([a1,...,an]) returns an S-expression \spad{(a1,...,an)}.
convert : Str -> %
++ convert(x) returns the Lisp atom x;
convert : Sym -> %
++ convert(x) returns the Lisp atom x.
convert : Int -> %
++ convert(x) returns the Lisp atom x.
convert : Flt -> %
++ convert(x) returns the Lisp atom x.
convert : Expr -> %
++ convert(x) returns the Lisp atom x.
car : % -> %
++ car((a1,...,an)) returns a1.
cdr : % -> %
++ cdr((a1,...,an)) returns \spad{(a2,...,an)}.
"#" : % -> Integer
++ #((a1,...,an)) returns n.
elt : (%, Integer) -> %
++ elt((a1,...,an), i) returns \spad{ai}.
elt : (%, List Integer) -> %
++ elt((a1,...,an), [i1,...,im]) returns \spad{(a_i1,...,a_im)}.
|