Dear all,
In "shadowing" thread, Allin (correctly) noticed
that there is a situation where it is difficult to
distinguish between series(int_lag) and function series (int_argument)
1) my suggested answer is incorrect, since we can
have

function series name (int i)
and
function list name (int i)

In this case it is impossible to distinguish
between name(int_lag) and name(int_arg)

The worse (note that I have obtained the
same on Windows10, 2018c and Ubuntu18.04,
today's Git
<hansl>
include lp-mfx.gfn

open keane.gdt -q
# the following line simulate the
situation when a data file
already has 'mlogit_mfx' series
series mlogit_mfx = normal()
smpl (year==87) --restrict
logit status 0 educ exper expersq black --multinomial -q
bundle b = mlogit_mfx(status, $xlist, $coeff, $vcv, $sample)
lp_mfx_print(&b)

catch list z = mlogit_mfx(-1 to -2)
ser = mlogit_mfx
eval mean(ser(-1))

########### output

? open keane.gdt -q
Read datafile /usr/local/share/gretl/data/misc/keane.gdt
? series mlogit_mfx = normal()
Generated series mlogit_mfx (ID 19)
? smpl (year==87) --restrict
Full data set: 12723 observations
Current sample: 1738 observations
? logit status 0 educ exper expersq black --multinomial -q
? bundle b = mlogit_mfx(status, $xlist, $coeff, $vcv, $sample)
? lp_mfx_print(&b)

Multinomial logit marginal effects
(evaluated at means of regressors)

note: dp/dx based on discrete change for black

Outcome 1: (status = 1, Pr = 0.0304)

              dp/dx        s.e.           z        pval        xbar
  educ     0.010826   0.0018373      5.8924  3.8069e-09      12.549
 exper    -0.020829   0.0054490     -3.8225  0.00013211      3.4403
expersq    0.0019936  0.00073506      2.7122   0.0066841      17.199
 black    -0.011001   0.0076838     -1.4318     0.15221     0.37973

Outcome 2: (status = 2, Pr = 0.1434)

              dp/dx        s.e.           z        pval        xbar
  educ    -0.045462   0.0039535     -11.499  1.3298e-30      12.549
 exper     -0.11360    0.012550     -9.0517  1.4080e-19      3.4403
expersq    0.0076209   0.0016081      4.7392  2.1456e-06      17.199
 black     0.065872    0.019682      3.3468  0.00081740     0.37973

Outcome 3: (status = 3, Pr = 0.8263)

              dp/dx        s.e.           z        pval        xbar
  educ     0.034636   0.0042808      8.0911  5.9137e-16      12.549
 exper      0.13443    0.013542      9.9268  3.1829e-23      3.4403
expersq   -0.0096146   0.0017275     -5.5654  2.6150e-08      17.199
 black    -0.054870    0.020909     -2.6243   0.0086834     0.37973

? catch list z = mlogit_mfx(-1 to -2)
> z = mlogit_mfx(-1 to
The symbol 'to' is undefined
? ser = mlogit_mfx
Generated series ser (ID 20)
? eval mean(ser(-1))
-0.017113513

We see that both running package functions
and 'ser = mlogit_mfx' worked ok
But in 'list z = mlogit_mfx(-1 to -2)'

'mlogit_mfx' is interpreted as function

In my opinion this phenomenon can easily be
avoided since no function can have -1 to -2 as
argument

Much worse is mlogit_mfx(-1)
A possible solution is deprecating mlogit_mfx(-1)
and substitution for mlogit_mfx(-1 to -1)

To the contrast,
<hansl>
open keane.gdt -q
series lp_mfx_print = normal()

include lp-mfx.gfn
smpl (year==87) --restrict
logit status 0 educ exper expersq black --multinomial -q
bundle b = mlogit_mfx(status, $xlist, $coeff, $vcv, $sample)
lp_mfx_print(&b)
<hansl>
Note the difference between the two scripts:
1-st a series have the same name with mlogit_mfx()
2-nd a series have the same name with lp_mfx_print()
The rest is the same
Also note that confusing named series are not inserted anywhere
Here I have

? open keane.gdt -q
Read datafile /usr/local/share/gretl/data/misc/keane.gdt
? series lp_mfx_print = normal()
Generated series lp_mfx_print (ID 19)
? include lp-mfx.gfn
/home/oleh/.gretl/functions/lp-mfx.gfn
lp-mfx 0.4, 2016-11-10 (Allin Cottrell)
? smpl (year==87) --restrict
Full data set: 12723 observations
Current sample: 1738 observations
? logit status 0 educ exper expersq black --multinomial -q
? bundle b = mlogit_mfx(status, $xlist, $coeff, $vcv, $sample)
? lp_mfx_print(&b)
> lp_mfx_print(&b)
Incomplete expression
Syntax error

Error executing script: halting
> lp_mfx_print(&b)

May be, a pointer argument?
So we need at least two corrections
1) some functions stop working
2) something should be done with series(int_lag)
Oleh