> ^ From:

> ^ Subject:

I hope it is not too late to ask for some small fixes for what I consider to be

a bug in the design of some gap functions. To show why I consider this feature to be a bug,

I will show some examples of programs where I had to add ugly code to get around

it -- then you can argue against me constructively by showing me how I should have

written my code.

Example 1:

Given a list l1,..lr of integers (with no holes -- recognized as a vector by Gap)

I want to construct the list (1,..,d,l1+d,...,lr+d).

So I wrote:

gap>shift:=function(l,d)return Concatenation([1..d],l+d);end;

What is the problem? This does not work when l is empty: I get

"Error, Vectors: '+' incompatible types"

Indeed, when asked:

gap>IsVector([]);

falseIs not this wrong? The vector space of dimension 0 is a perfectly valid

mathematical object -- How to represent its elements?I had to write:

plus:=function(a,b)

if Length(a)=0 then return a;

elif Length(b)=0 then return b;

else return a+b;

fi;

end;and use it in many places instead of '+' (and similarly for '-').

Is not this ugly (and inefficient)?

Example 2:

I need to compute an echelonized basis of the space generated by a set of vectors.

If s is this set (represented as a list of vectors), TriangulizeMat(s) works well

excepted when the set is empty:

gap>TriangulizeMat([]);

Error, ... because in the code of the function Length(mat[1]) is taken.Would not it be easy to fix it so that TriangulizeMat([])=[] ?

Discussion:

these 2 examples seem to me a symptom of a wrong treatment of empties in GAP, which

forces to add ugly and unnecessary code to handle special cases. GAP has only one

kind of empty, the list [] (in contrast to languages like APL where an empty matrix still

may have a shape like [0,5]). This is fine with me, but then all operations which logically

should accept empty vectors(or matrices, or whatever...) should also accept [].

I cannot see any big problem with IsVector([]) being true, but it being false certainly gives me

problems.

Jean MICHEL, D.M.I., E.N.S - Paris

> < [top]