I just looked how differential forms are implemented and was quite surprized

with(DifferentialGeometry):
DGsetup([x,y,z],M):
a:=evalDG(dx &wedge dy+2*dy &wedge dz):
lprint(a);

_DG([["form", M, 2], [[[1, 2], 1], [[2, 3], 2]]])

It is an unevaluated function with nested lists as arguments.

Probably, not the worst possible choice since I can imagine few choices that would be worse - strings, for instance. But there are so many other choices that seem much better - antisymmetric Arrays, or tables, for instance. Why lists?

Alec


Please Wait...