The append function in axiom has the lisp background.
axiom and lisp don't duplicate the last list.
fricas
(1) -> L1 := [1,2,3] ;
Type: List(PositiveInteger
?)
fricas
L2 := [10,11,12] ;
Type: List(PositiveInteger
?)
fricas
L := append (L1, L2) ;
Type: List(PositiveInteger
?)
fricas
L2.2 := 100
fricas
L.5 -- is 100, not 11
There is also a concat function that I understand in a mathematical way.
today concat works as append.
fricas
L1 := [1,2,3];
Type: List(PositiveInteger
?)
fricas
L2 := [10,11,12] ;
Type: List(PositiveInteger
?)
fricas
Lc := concat (L1, L2)
Type: List(PositiveInteger
?)
fricas
L1.2 :=20
fricas
Lc.2
fricas
L2.2 :=30
fricas
Lc.5
Lc doesn't change if I change L1, and Lc change if I modify L2.
Is it possible to change concat in order to copy L2, as
concat (L1, L2) == append (L1, copy (L2))
The concat function becomes just a little slower.
And then list are here a real hi-level n-uple oblject, not a lisp object.
F.Maltey
Category: Axiom Compiler => Axiom Library
Status: open => closed
This is a common idiom and List is not "mathematical" but a data structure.