如果我使用 new 来初始化 maxima 中的 defstruct 有关系吗?

Does it matter if I use new to initialize a defstruct in maxima?

使用 new 或不使用 new 初始化 defstruct 似乎都是一样的,有什么区别吗?

(%i1) defstruct(foo(a,b));
(%o1)                             [foo(a, b)]
(%i2) f: foo(1,2);
(%o2)                          foo(a = 1, b = 2)
(%i3) f@a;
(%o3)                                  1
(%i4) f_new: new(foo(1,2));
(%o4)                          foo(a = 1, b = 2)
(%i5) f_new@a;
(%o5)                                  1
(%i6) 

在不使用 new 的情况下,代码看起来更短更简单,但我不确定如果我使用这种模式,某些代码是否会中断。

我觉得这两种方式都可以。据我所知,唯一的区别是 new(foo(...)) 将确保初始值的数量正确。例如 new(foo(1))new(foo(1, 2, 3)) 将给出错误,foo 如上所述。只写 foo(1)foo(1, 2, 3) 不会触发错误(也许应该)。