Thanks for pointing out why I should use ‘use’ on those symbols. I have now
updated my project.
> On 7. Feb, 2017, at 17:36, Alexander Burger <a...@software-lab.de> wrote:
> Hi Jon,
>> I have noticed that frequent use of ‘setq’ has been questioned recently on
>> this list. In my convConcat.l script there are quite a few setq’s that
>> could have been coded in a better way. Let me know if you spot some obvious
> Basically there is nothing bad about 'setq'.
> It is just problematic if you use it to modify not-locally-bound symbols (the
> term is "free variables") without them being clearly meant as global variables
> (by convention with a leading '*'), or from functions meant as local to other
> functions (by convention with a leading '_').
> 'lint' should complain in such cases.
> In case of convConcat.l, you set some globals in the beginning, and local
> variables like 'Head', 'Tail', 'Val' and 'C'. Looks all good.
> If I lint the code, I just get a single warning
> : (lintAll)
> -> ((convLink (bnd @Props @After @X @Before)))
> which means "please bind these four symbols" in function 'convLink'.
> This is because 'match' also sets values. You can fix this by calling 'use' on
> (de convLink (F Chunk)
> # First checking special case <a name=">foo">
> (use (@Props @After @X @Before)
> (if (match '(@Before < a " " n a m e = "\"" > @X "\"" > @After) Chunk)
> ♪♫ Alex