Geoff Canyon wrote:
On Thu, Aug 8, 2013 at 1:34 PM, Richard Gaskin wrote:

My favorite annoyance with xTalks is the decision by the HyperTalk team to
allow some functions to be called as though they're properties - but not
all.  You can say "get the abs of -10" or "abs(-10)", and you can say "get
offset("l", "hello") but not "get the offset of "l" in "hello".

Stranger still, the "abs" function turns out to be an especially good
example:  it's an abbreviation for which the long form ("absolute") is not
permitted. I kid you not.

These are both going to be correctable in a soon-ish time frame if the new
language features meet the spec. (waiting breathlessly)

The latter would be useful, but the former need not be expanded.

IMNSHO, allowing property syntax is a bug, not a feature, so further encouraging the growing list of "sometimes" rules would seem to hamper learnability rather than enhance it.

Parentheses aren't evil. In fact, they serve as a gentle visual reminder that a value is being returned in that place.

I know I'm in a minority on this one, so I won't belabor the point beyond this post. But reading the thread here some months back filled with glee at the prospect of inventing dozens of new ways to call a function or set a property made me cry at the prospect of having to teach all that to someone.

If we were to expand the range of functions that can be called with property syntax, at some point we'd be faced with those that have more arguments than we can gracefully (or certainly intuitively) string out into an "English-like" statement.

And even for those we could accommodate, consider:

  put the offset of "l" in "hello" starting at 2

..as an alternative to the delightfully concise:

  put offset("l", "hello", 2)

And what happens to the scripter who guesses incorrectly that the statement would be:

  put the offset of "l" in "hello" beginning with 2

..or:

  put the offset of "l" in "hello" beginning with position 2

..or:

  put the offset of "l" in "hello" beginning with character 2

..or:

  put the offset of "l" in "hello" beginning after character 2

...or:

  put the offset of "l" in "hello" beginning with the second character

..or:

skipping the first 2 characters, how many characters in "hello" can I find "l"

Who has the time to define all those templates, and how big would the engine be that contained them?

Even just putting in the meta-rules that would define such templates would be a massive beast, or at least complex enough that, honestly, I'd rather see the time spent on other priorities (reliable startTime for QT-free media playback anyone?).

As one (possibly irrelevant) example, ever look at how much code is needed for something as relatively simple as a Porter stemmer? The necessary meta-rules which could obviate the need to define fixed templates would turn stemming into true lemmatization - which is why few programs attempt lemmatization, cheating with the crudeness of stemming instead.

With LC functions, so simple instead to just say functions require parens.

Sure, you need to know the args, but if you don't know what a function is for why would you be using it anyway?

I would caution that attempting to make a system that doesn't require learning risks being cumbersome if it's even possible at all.

Some things just requiring learning. Let's keep the number of things that have to be learned small, and the rest will take care of itself.

If remembering argument positions is the challenge, I'd love to see named args, like we see with XML attributes:

  offset(searchterm="l" searchedText="hello" start=2)

Named arguments would have many useful applications, while creating an ever-expanding game of hunt-the-parser seems less productive.

--
 Richard Gaskin
 Fourth World
 LiveCode training and consulting: http://www.fourthworld.com
 Webzine for LiveCode developers: http://www.LiveCodeJournal.com
 Follow me on Twitter:  http://twitter.com/FourthWorldSys

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to