Alternate declaration syntax
Robert Fraser
fraserofthenight at gmail.com
Fri Apr 11 15:20:34 PDT 2008
Hans W. Uhlig wrote:
> Ok, Posting to the main forum so it doesn't get lost in the const stuff.
>
> Perhaps a slight variation to the C declaration might be in order, since
> I know that multiple return values are wanted, a simple and readable
> syntax for inheritance is needed (using : as an inheritor does not make
> code more readable) try this out and see if it makes it clearer
>
> <modifiers,...> <identifier> <properties,...> {...}
>
> such that:
> const foo(const int, const double) §
> throws barExtension §
> returns const int, const float
> {
> // ... code ...
> }
>
> same for classes:
>
> const class foo § extends bar {
> const int x;
> pure foo(const int, const double) § returns invariant string;
> // ... more code ...
> }
>
> (Note: § is used as a divider because no one uses it for anything in
> programming and I didn't want to start an argument over : or | or ; or
> any other punctuation being used elsewhere and being bad, quite possible
> punctuation wouldn't be neccessary)
>
> It looks like a hideous cross between java and visual basic but it is
> clean, readable, simple to machine parse(I think) and descriptive. using
> slightly longer keywords makes a language a little more verbose, but it
> also makes it readable. if you want to use punctuation for everything
> you get what happened to perl when someone got a little too creative
>
> `$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
> $!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
> $_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
> ;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
As for the post itself, I agree the return type should be at the end,
but good luck convincing Walter of such. Also, D has no exception
specifications ("throws" clauses) - nor do many other languages besides
Java (it's considered something of a failed experiment...).
My suggestion for the syntax is to indeed use the colon but not a
"returns" keyword since that's a lot of typing. If I were designing a
language, it would look like:
const foo(int x, int y, int z) : int
{
}
Grammatically:
<modifiers> <identifier> "(" <parameters> ")" ":" <return type> "{"
<statements> "}"
More information about the Digitalmars-d
mailing list