aboutsummaryrefslogtreecommitdiff
path: root/src/algebra
diff options
context:
space:
mode:
Diffstat (limited to 'src/algebra')
-rw-r--r--src/algebra/algfunc.spad.pamphlet4
-rw-r--r--src/algebra/any.spad.pamphlet10
-rw-r--r--src/algebra/array1.spad.pamphlet32
-rw-r--r--src/algebra/domain.spad.pamphlet4
4 files changed, 28 insertions, 22 deletions
diff --git a/src/algebra/algfunc.spad.pamphlet b/src/algebra/algfunc.spad.pamphlet
index 5cb93af1..ca14074d 100644
--- a/src/algebra/algfunc.spad.pamphlet
+++ b/src/algebra/algfunc.spad.pamphlet
@@ -89,7 +89,9 @@ AlgebraicallyClosedField(): Category == Join(Field,RadicalCategory) with
rootsOf(p:SUP) == rootsOf(p, new())
rootsOf(p:SUP, y:Symbol) == allroots(p, y, rootOf)
zerosOf(p:SUP, y:Symbol) == allroots(p, y, zeroOf)
- assign(x, f) == (assignSymbol(x, f, $)$Lisp; f)
+ assign(x, f) ==
+ assignSymbol(x, f, $)$Foreign(Builtin)
+ f
zeroOf(p:Polynomial $) ==
empty?(l := variables p) => error "zeroOf: constant polynomial"
diff --git a/src/algebra/any.spad.pamphlet b/src/algebra/any.spad.pamphlet
index f2aa5bdb..4af9f557 100644
--- a/src/algebra/any.spad.pamphlet
+++ b/src/algebra/any.spad.pamphlet
@@ -191,9 +191,9 @@ Any(): SetCategory with
otherwise => (rep(x).ob pretend SExpression)::OutputForm
any(domain, object) ==
- (isValidType(domain)$Lisp)@Boolean => per [domain, object]
- domain := devaluate(domain)$Lisp
- (isValidType(domain)$Lisp)@Boolean => per [domain, object]
+ isValidType(domain)$Foreign(Builtin) => per [domain, object]
+ domain := devaluate(domain)$Foreign(Builtin)
+ isValidType(domain)$Foreign(Builtin) => per [domain, object]
error "function any must have a domain as first argument"
@
@@ -239,7 +239,7 @@ AnyFunctions1(S:Type): with
== add
import NoneFunctions1(S)
- Sexpr:SExpression := devaluate(S)$Lisp
+ Sexpr:SExpression := devaluate(S)$Foreign(Builtin)
coerce(s:S):Any == any(Sexpr, s::None)
@@ -427,7 +427,7 @@ Scope(): Public == Private where
nothing
pushNewContour(b,s) ==
- CONS(LIST(b)$Lisp,s)$Lisp
+ %pair(%list(b)$Foreign(Builtin),s)$Foreign(Builtin)
currentScope() ==
%head(_$e$Lisp)$Foreign(Builtin)
diff --git a/src/algebra/array1.spad.pamphlet b/src/algebra/array1.spad.pamphlet
index 48ee917f..07be7592 100644
--- a/src/algebra/array1.spad.pamphlet
+++ b/src/algebra/array1.spad.pamphlet
@@ -372,12 +372,16 @@ FlexibleArray(S: Type) == Implementation where
IndexedOneDimensionalArray(S:Type, mn:Integer):
OneDimensionalArrayAggregate S == add
- import %vlength: % -> NonNegativeInteger from Foreign Builtin
- import %aref: (%,Integer) -> S from Foreign Builtin
-
macro Qmax == maxIndexOfSimpleArray$Foreign(Builtin)
macro Qsetelt == setSimpleArrayEntry$Foreign(Builtin)
macro I == Integer
+
+ import %icst0: I from Foreign Builtin
+ import %icst1: I from Foreign Builtin
+ import %ilt: (I,I) -> Boolean from Foreign Builtin
+ import %vlength: % -> NonNegativeInteger from Foreign Builtin
+ import %aref: (%,Integer) -> S from Foreign Builtin
+
Rep == PrimitiveArray S
newArray(n: Integer): % ==
@@ -395,22 +399,22 @@ IndexedOneDimensionalArray(S:Type, mn:Integer):
map!(f, s1) ==
n: Integer := Qmax(s1)
negative? n => s1
- for i in 0..n repeat Qsetelt(s1, i, f(%aref(s1,i)))
+ for i in %icst0..n repeat Qsetelt(s1,i,f %aref(s1,i))
s1
map(f, s1) ==
n:Integer := Qmax(s1)
negative? n => s1
ss2:% := newArray(n+1)
- for i in 0..n repeat Qsetelt(ss2, i, f(%aref(s1,i)))
+ for i in %icst0..n repeat Qsetelt(ss2,i,f %aref(s1,i))
ss2
map(f, a, b) ==
maxind:Integer := min(Qmax a, Qmax b)
negative? maxind => empty()
- c:% := newArray(maxind+1)
- for i in 0..maxind repeat
- Qsetelt(c, i, f(%aref(a,i),%aref(b,i)))
+ c:% := newArray(maxind + %icst1)
+ for i in %icst0..maxind repeat
+ Qsetelt(c,i,f(%aref(a,i),%aref(b,i)))
c
if zero? mn then
@@ -427,18 +431,18 @@ IndexedOneDimensionalArray(S:Type, mn:Integer):
else if one? mn then
maxIndex x == %vlength x
- qelt(x, i) == %aref(x, i-1)
- qsetelt!(x, i, s) == Qsetelt(x, i-1, s)
+ qelt(x, i) == %aref(x, i - %icst1)
+ qsetelt!(x, i, s) == Qsetelt(x, i - %icst1, s)
elt(x:%, i:I) ==
- QSLESSP(i,1@I)$Lisp or QSLESSP(%vlength x,i)$Lisp =>
+ %ilt(i,%icst1) or %ilt(%vlength x,i) =>
error "index out of range"
- %aref(x, i-1)
+ %aref(x, i - %icst1)
setelt(x:%, i:I, s:S) ==
- QSLESSP(i,1@I)$Lisp or QSLESSP(%vlength x,i)$Lisp =>
+ %ilt(i,%icst1) or %ilt(%vlength x,i) =>
error "index out of range"
- Qsetelt(x, i-1, s)
+ Qsetelt(x, i - %icst1, s)
else
qelt(x, i) == %aref(x, i - mn)
diff --git a/src/algebra/domain.spad.pamphlet b/src/algebra/domain.spad.pamphlet
index 6214d34c..456680dc 100644
--- a/src/algebra/domain.spad.pamphlet
+++ b/src/algebra/domain.spad.pamphlet
@@ -343,9 +343,9 @@ OperatorSignature(): Public == Private where
Private == add
import %equal: (%,%) -> Boolean from Foreign Builtin
- construct(o,s) == LIST(o,s)$Lisp
+ construct(o,s) == %list(o,s)$Foreign(Builtin)
name x == %head(x)$Foreign(Builtin)
- signature x == CADR(x)$Lisp
+ signature x == %lsecond(x)$Foreign(Builtin)
x = y == %equal(x,y)
arity x == (#source signature x)::Arity
coerce(x: %): OutputForm ==