Inconsistent comma requirements
Mark Waddingham
mark at livecode.com
Mon Jun 26 02:22:07 EDT 2017
On 2017-06-26 01:42, Monte Goulding via use-livecode wrote:
>> On 25 Jun 2017, at 1:37 am, Richard Gaskin via use-livecode
>> <use-livecode at lists.runrev.com> wrote:
>>
>> How many of you have never before known that commas are optional
>> between definition arguments?
>
> I have seen it before in user scripts but never used it myself. It’s
> one of those things you discover (like when {} could be used
> interchangeably with []) that you quickly realise you should never
> rely on so you forget pretty quickly ;-)
It is a HyperCard or SuperCard script compatibility thing I believe...
The ability to not have commas in the parameter declaration list does no
real harm, although as a couple of people have pointed out means error
detection in that specific case is less 'strong' so is probably best
avoided for that reason, if no other.
> FWIW it actually wouldn’t be _that_ hard to add the ability to specify
> some syntactic sugar to your handlers and have the parser ignore said
> sugar:
>
> e.g:
>
> command Foo “with” pBar
>
> end Foo
>
> Foo with pBar
>
> However this is somewhat less than and conflicts with the open
> language concept so it’s probably best not to consider it too
> seriously.
That suggestion is essentially the same as Richard's - whilst it is
certainly an idea it means that errors in syntax can't be detected
except at runtime (as you can have multiple handlers processed in the
message path, and they can change dynamically). Also, in the case of
just passing through 'keywords' as string literals you are moving
parsing into the command handler - which means that parsing is then on
the onus of the script writer, which means just making more work for
scripts for what is probably of little benefit.
There's also an issue in that you can't really use any connecting words
which are used to form expressions:
doSomething dA and dB and dC
There's no way to know (with the 'ignore connectives' idea) how to
process this - dA and dB (and all combinations) is a valid boolean
expression. So in this case I might mean a command taking two parameters
(ignoring 'and' in the first or second case), or one taking one
parameter (dA and dB and dC).
Warmest Regards,
Mark.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list