Hello,

Scilab 6.0 is being to introduce a very specific extraction syntax for cells. Is it really worthwhile to do so, when everywhere else Scilab 6.0 tries to remove features that are too specific, and works to improve consistency?

When we use a list -- that is the simplest heterogeneous container -- and address a component of it,
we do it with (). We do not need specific extractors like [] or {}.
Moreover, this does not return a list with a single component, but the component itself, unwrapped from its container:
L = list(%pi, %i, %t, "abcd")
L(2)  // => returns %i, not list(%i)
-->L(2)
 ans  =
    i
-->typeof(L(2))
 ans  =
 constant

But the syntax that is being introduced for cells with 6.0.0 is not consistent with that:
C = {%pi %i ; %t "abcd"}
C(3) // returns a cell instead of directly the component %t
typeof(C(3))

// A specific addressing is introduced /just to strip off the cell container //OR convert it to a list/():
C{3}    // returns %i  (...not list(%i))
C{1,:}  // returns list(%pi, %i)

--> C = {%pi %i ; %t "abcd"}
 C  =
  [1x1 constant]  [1x1 constant]
  [1x1 boolean ]  [1x1 string  ]

--> C(3)
 ans  =
  [1x1 constant]

--> typeof(C(3))
 ans  =
 ce

--> C{3}
 ans  =
  i

*After C(3), who will need a cell with a single component, instead of the component itself?* As, again, who after L = list(%pi, %i, %t, "abcd"), L(2) would expect list(%i) instead of %i ? This has never been reported as a wish.

When several components are extracted, {} returns a list and therefore looses the sizes of the extraction. This is a poor result.
Do we really need to introduce just {} to get it?
To get the same when needed, why not "simply" implementing a similar behavior of the ":" linearized selector as for lists with *C(:)*?
Or more simply, a cell2list() function could be applied to C(i:j,m:n)

**Conclusion: {} specific extract**ors* *degenerate index addressing, are unhandy and inconsistent with extraction from a list when only one component is extracted, and have a poor result when several components are extracted. As extractors, they should be removed from Scilab 6.0 and kept only as cells constructors**.

**Hoping to read your own thoughts about that,

Best regards
Samuel Gougeon

_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users

Reply via email to