diff options
author | dos-reis <gdr@axiomatics.org> | 2013-05-14 07:38:41 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2013-05-14 07:38:41 +0000 |
commit | c582247ba667504452862dc5f8a007999ea367ca (patch) | |
tree | 6a2a6d1582d077d5ee30ccb46d5905d58376fdfe /src | |
parent | 8464a292621a8ebec25e9906415cf324e3f0b419 (diff) | |
download | open-axiom-c582247ba667504452862dc5f8a007999ea367ca.tar.gz |
* algebra/array2.spad.pamphlet (InnerTwoDimensionalArray) [map]:
Move implementation from TwoDimensionalArrayCategory.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/algebra/array2.spad.pamphlet | 25 |
2 files changed, 15 insertions, 15 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 1e25e2e0..1ef3785e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2013-05-14 Gabriel Dos Reis <gdr@integrable-solutions.net> + * algebra/array2.spad.pamphlet (InnerTwoDimensionalArray) [map]: + Move implementation from TwoDimensionalArrayCategory. + +2013-05-14 Gabriel Dos Reis <gdr@integrable-solutions.net> + * algebra/array2.spad.pamphlet (TwoDimensionalArrayCategory): Move defaults to InnerTwoDimensionalArray. diff --git a/src/algebra/array2.spad.pamphlet b/src/algebra/array2.spad.pamphlet index 1f23e4fb..9be6ee45 100644 --- a/src/algebra/array2.spad.pamphlet +++ b/src/algebra/array2.spad.pamphlet @@ -142,21 +142,6 @@ TwoDimensionalArrayCategory(R,Row,Col): Category == Definition where entryList --% Creation - -- array creation requires an initial element used to - -- populate the array. This is a best effort attempt - -- to supply such element, when semantics permits. - sampleElement(): R == - R has sample: () -> R => sample()$R - NIL$Lisp -- better obfuscation welcome. - - map(f,m,n,r) == - maxRow := max(maxRowIndex m,maxRowIndex n) - maxCol := max(maxColIndex m,maxColIndex n) - ans := new(max(nrows m,nrows n),max(ncols m,ncols n),sampleElement()) - for i in minRowIndex(m)..maxRow repeat - for j in minColIndex(m)..maxCol repeat - qsetelt!(ans,i,j,f(elt(m,i,j,r),elt(n,i,j,r))) - ans setRow!(m,i,v) == i < minRowIndex(m) or i > maxRowIndex(m) => @@ -310,6 +295,16 @@ InnerTwoDimensionalArray(R,Row,Col):_ t.i := map(f,rep(m).i,rep(n).i) per t + map(f,m,n,r) == + nrows m = nrows n and ncols m = ncols n => map(f,m,n) + nr := max(nrows m,nrows n) + nc := max(ncols m,ncols n) + t: Rep := new(nr,sample$PrimitiveArray(R)) + for i in 1..nr repeat + t.i := [[f(elt(m,i,j,r),elt(n,i,j,r)) + for j in 1..nc]]$PrimitiveArray(R) + per t + @ \section{domain ARRAY2 TwoDimensionalArray} |