Issue 1 I vote for retaining the both functions
strings Sc = mkarray("1 A", "2 B", "3 C", "4 D")
strings Sr = mkarray("mkarray() is", "a convenient", "tool
to", "make spaced", "names quickly")
set seed 147
matrix mtx = mnormal(5,4)
colnames(mtx,Sc)
rownames(mtx,Sr)
mtx
Issue 2 I vote for (a)
string s = "I(3), zeros(4,1), ones(4,2)"
matrices M = mkarray(@s)
putarray(M)
Oleh
2 січня 2016, 02:37:59, від "Allin Cottrell" < cottrell(a)wfu.edu >:
Given the fixes we've accumulated, and given that the New Year is
upon us, I'm thinking we should do a new release soon. But before
doing that I'd like to resolve a couple of points about array
functions.
Sorry, this is a bit long, but I'd appreciate hearing comments from
anyone who's able to follow what I'm talking about!
First, we have at present the semi-documented array() function (it's
in the User's Guide, but not in the Function Reference), and also
the undocumented mkarray() function, which lets you define an array
by supplying one or more expressions which evaluate to the specified
type. See
http://lists.wfu.edu/pipermail/gretl-devel/2015-November/006236.html
In relation to mkarray(), I floated the idea of merging this with
array() in
http://lists.wfu.edu/pipermail/gretl-devel/2015-December/006373.html
and Jack responded enthusiastically in
http://lists.wfu.edu/pipermail/gretl-devel/2015-December/006374.html
However, I'm now thinking that the merger is not such a good idea,
on account of the ambiguity of something like the following:
<hansl>
matrix m = {1, 3, 5}
matrices M = array(m[2])
</hansl>
Do we read this as a request to create an array with 3 empty matrix
slots, or as a request to create an array with one member, namely
the second element of m, taken as a 1 x 1 matrix?
Note that if we did not merge the two functions, then
matrices M = array(m[2])
would unambiguously select the first of these alternates, while
matrices M = mkarray(m[2])
would unambiguously select the second.
We could just legislate that one of these interpretations is
favoured, in which the user wanting the other one would have to take
an extra step:
scalar n = m[2]
matrices M = array(n)
# OR
matrix m2 = m[2]
matrices M = array(m2)
But I think it may be cleaner to retain both functions (and of
course, document both).
Second issue: at present the "print" command as applied to an array
gives fairly minimal information. For example, the input
<hansl>
strings S = mkarray("happy", "new", "year")
print S
</hansl>
produces the output
? print S
Array of strings, length 3
But we also have the undocumented function putarray(), which gives a
basic printout of the array members, as in
? putarray(S)
happy
new
year
Here, I'd like to canvas the options (a) keep what we have right now
and document putarray(), or (b) make the "print" command do what
putarray() does, and scrap putarray(). (Bear in mind that the array
in question might contain huge matrices rather than short strings.)
Let me note that both of these array-printing options are probably
best considered as relevant to writers of function packages,
primarily as debugging tools. If you really want to "pretty print"
an array you would probably want to write your own function.
Allin
_______________________________________________
Gretl-devel mailing list
Gretl-devel(a)lists.wfu.edu
http://lists.wfu.edu/mailman/listinfo/gretl-devel