That would provide us with a function definition like so
function foo|bar|{
doSomething bar
}
The 'pipe' was used to delimit a list of atomic values that would be used as variable assignments in the context of the function.
But what was it? a list? if it was a list could I use it in other places to define a list?
Then I had braces '(' and ')' this originally defined a predicate, a boolean result. so if you saw
set x (foo bar)
you knew the result of foo bar bar would(or should) be equivalent to true.
I like this, and it makes sense at a high level. Yet underneath, it's all a list. It's conceptually the same thing, over and over again, represented in different ways.
I then ran into an issue of "lack of characters" One of the defining problems when designing a language is the sheer lack of representational characters we have on a keyboard. We've already over ridden and multi-purposed all the special characters already so you have to be cautious over what you are attempting to do.
I finally said "screw it" and removed the '|' as special characters and reverted to a list. So that the demo function in question now becomes
function foo(bar){
doSomething
}
which, of course, makes it look closer to other languages and that, in itself, provides some value.
No comments:
Post a Comment