View previous topic :: View next topic |
Author |
Message |
csauls
Joined: 27 Mar 2004 Posts: 278
|
Posted: Tue Mar 27, 2007 3:40 pm Post subject: Some ideas. |
|
|
Actually, first, there's a typo in the docs. In the language spec, on the Statements page, in the Foreach Statements section, the example expansion code uses the colon syntax for calling the opApply member rather than a dot.
Now on the ideas. I really do like Mini-D so far, and hope to use it for future scripting purposes. I noticed its just a step and a half from being "JSON complete" so to say. All it needs is an eval() function or the like so that JSON notation can be automatically interpreted, and to allow for strings in place of identifiers in Table constructors. That is, make {foo=9} and {"foo"=9} identical.
Number two: default assignment. This is a notion I take from ColdC, where the statement 'foo ?= 42;' is the same as 'if (!foo) foo = 42;'. In MiniD I would suggest it be the same as 'if (foo is null) foo = 42;'.
Number three -- and I may have just missed these -- provide looping operations for arrays. 'filter', 'find', and 'map'. It'd be easy enough for users to write them in, but their utility (opinion) merits being standard.
Lastly, and this is important for me, add support for Tango.
Keep up the good work! _________________ Chris Nicholson-Sauls |
|
Back to top |
|
|
JarrettBillingsley
Joined: 20 Jun 2006 Posts: 457 Location: Pennsylvania!
|
Posted: Tue Mar 27, 2007 5:02 pm Post subject: |
|
|
Quote: | Actually, first, there's a typo in the docs. In the language spec, on the Statements page, in the Foreach Statements section, the example expansion code uses the colon syntax for calling the opApply member rather than a dot. |
NOOOOOOOOOOOOOOOOOOOOO
Quote: | I noticed its just a step and a half from being "JSON complete" so to say. All it needs is an eval() function or the like so that JSON notation can be automatically interpreted, and to allow for strings in place of identifiers in Table constructors. That is, make {foo=9} and {"foo"=9} identical. |
But doesn't JSON use a colon to separate the key and the value?
Quote: | Number two: default assignment. This is a notion I take from ColdC, where the statement 'foo ?= 42;' is the same as 'if (!foo) foo = 42;'. In MiniD I would suggest it be the same as 'if (foo is null) foo = 42;'. |
That's a pretty cool idea. It'd also make "default parameters" a little quicker to type.
Quote: | Number three -- and I may have just missed these -- provide looping operations for arrays. 'filter', 'find', and 'map'. It'd be easy enough for users to write them in, but their utility (opinion) merits being standard. |
I've actually added array.map, apply, and reduce, I just haven't submitted the most recent code to the repo yet. But filter and find are good ideas, I'll put them in.
Quote: | Lastly, and this is important for me, add support for Tango. |
This one I'm not so sure will happen, at least not in the near future. Fact is I don't know anything about Tango, and I haven't had much luck installing/using it. That, and I'm kind of ... I dunno, partial to phobos, though there are certainly areas where I find it lacking (i.e. total lack of support for anything but char[]). And then I'd have to manage two versions of everything, especially the standard libraries, which are of course very much dependent upon the D standard library in use, but I guess that's my responsibility after all.. |
|
Back to top |
|
|
csauls
Joined: 27 Mar 2004 Posts: 278
|
Posted: Tue Mar 27, 2007 11:26 pm Post subject: |
|
|
JarrettBillingsley wrote: | Quote: | Actually, first, there's a typo in the docs. In the language spec, on the Statements page, in the Foreach Statements section, the example expansion code uses the colon syntax for calling the opApply member rather than a dot. |
NOOOOOOOOOOOOOOOOOOOOO
|
I feel your pain.
JarrettBillingsley wrote: | Quote: | I noticed its just a step and a half from being "JSON complete" so to say. All it needs is an eval() function or the like so that JSON notation can be automatically interpreted, and to allow for strings in place of identifiers in Table constructors. That is, make {foo=9} and {"foo"=9} identical. |
But doesn't JSON use a colon to separate the key and the value?
|
In the process of answering this, I accidentally answered the quotes issue too. I was just going to say it wouldn't take much of a string replace or regexp replace to switch those colons out... which, incidentally, means it wouldn't take much of one to parse it utterly. An MD JSON lib would suffice grandly.
Still, eval() might have its uses... But admittedly problematic to implement, I'm sure.
JarrettBillingsley wrote: | Quote: | Number two: default assignment. This is a notion I take from ColdC, where the statement 'foo ?= 42;' is the same as 'if (!foo) foo = 42;'. In MiniD I would suggest it be the same as 'if (foo is null) foo = 42;'. |
That's a pretty cool idea. It'd also make "default parameters" a little quicker to type.
|
Bingo!
JarrettBillingsley wrote: | Quote: | Lastly, and this is important for me, add support for Tango. |
This one I'm not so sure will happen, at least not in the near future. Fact is I don't know anything about Tango, and I haven't had much luck installing/using it. That, and I'm kind of ... I dunno, partial to phobos, though there are certainly areas where I find it lacking (i.e. total lack of support for anything but char[]). And then I'd have to manage two versions of everything, especially the standard libraries, which are of course very much dependent upon the D standard library in use, but I guess that's my responsibility after all.. |
And your answer is pretty much what I expected. A quick manual scan through some of MiniD leads me to think, however, that it should be possible. If its just absolutely necessary to have a Tango "fork", I can try to donate a little of my own time to see it achieved.
In fact -- Would you have any problem with me attempting to re-engineer a current snapshot of MiniD to use Tango? Daunting, but I do get spats of boredom sometimes.
Edited to add:
Incidentally I found another oops in the docs: there's no mention of isNamespace() in the BaseLib page. I assume that probably just hasn't been gotten to since as I recall you only just made Namespaces distinct in this way recently. _________________ Chris Nicholson-Sauls |
|
Back to top |
|
|
JarrettBillingsley
Joined: 20 Jun 2006 Posts: 457 Location: Pennsylvania!
|
Posted: Wed Mar 28, 2007 6:39 am Post subject: |
|
|
Quote: | An MD JSON lib would suffice grandly. |
Yeah, it could be a little derivation of the compiler. Or even put support for it into the compiler, but not have it part of the language; just make it so a function call would parse it and turn it right into MiniD code.
Quote: | Still, eval() might have its uses... |
Yeah, I plan on making an eval() function. I've seen some pretty cool metaprogramming-esque stuff done in Lua with it.
Quote: | In fact -- Would you have any problem with me attempting to re-engineer a current snapshot of MiniD to use Tango? |
Nope, that'd be sweet.
Quote: | there's no mention of isNamespace() in the BaseLib page. |
Once again: NOOOOOOOOOOOOOOOO |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|