The append function in axiom has the lisp background.
axiom and lisp don't duplicate the last list.
axiom
L1 := [1,2,3] ;
Type: List(PositiveInteger
?)
axiom
L2 := [10,11,12] ;
Type: List(PositiveInteger
?)
axiom
L := append (L1, L2) ;
Type: List(PositiveInteger
?)
axiom
L2.2 := 100
axiom
L.5 -- is 100, not 11
There is also a concat function that I understand in a mathematical way.
today concat works as append.
axiom
L1 := [1,2,3];
Type: List(PositiveInteger
?)
axiom
L2 := [10,11,12] ;
Type: List(PositiveInteger
?)
axiom
Lc := concat (L1, L2)
Type: List(PositiveInteger
?)
axiom
L1.2 :=20
axiom
Lc.2
axiom
L2.2 :=30
axiom
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