Re: Is this D or is it Javascript?

2013-07-09 Thread Kagamin

On Saturday, 6 July 2013 at 00:21:54 UTC, Adam D. Ruppe wrote:

// the second () is just because @property is broken
writeln(Math.max()(12, 24)); // prints 24


With dynamic typing there's no way to tell if Math.max(12,24) is 
a method call or field delegate call. Javascript assumes it's 
member call and passes this pointer to the called function. When 
I implemented an object for javascript, I chose to detect if a 
called method is a field with delegate and forward the call to 
the delegate as per semantics of javascript.


Re: Is this D or is it Javascript?

2013-07-09 Thread Adam D. Ruppe

On Tuesday, 9 July 2013 at 19:14:30 UTC, Kagamin wrote:
With dynamic typing there's no way to tell if Math.max(12,24) 
is a method call or field delegate call.


The way my thing works is Math.max (or anything else) returns a 
ref var, and the (12,24) does opCall on it, which succeeds if the 
var is of type function.


bearophile recently posted a pull request by Kenji Hara IIRC that 
implements @property more correctly. If that gets pulled, this 
will be good.


In the little scripting language too, there's now a class 
declaration, that looks kinda like D, but it is actually just 
syntax sugar that assigns the declarations to the object, so 
there is no distinction there between a method and field - all 
methods are just delegates attached to the object.


Re: Is this D or is it Javascript?

2013-07-08 Thread Adam D. Ruppe

On Friday, 5 July 2013 at 23:04:28 UTC, Adam D. Ruppe wrote:
BTW I'll push another commit to jsvar.d and script.d over the 
weekend. I got return/break/continue working now (in the cases 
I've tried at least, simple ones).



I just pushed another commit to github that includes this and 
other stuff. I quickly slapped together some more features to the 
script interpreter and the needed support to var for them.


The comments in the file explain most of it, but short answer is 
it is looking more and more like a D/javascript hybrid so if you 
just try something, it might work.


Re: Is this D or is it Javascript?

2013-07-08 Thread Adam D. Ruppe
On Saturday, 6 July 2013 at 14:18:35 UTC, Andrei Alexandrescu 
wrote:

Perfect! Adam, no more excuses :o).



Now I just have to decide what to actually write... I don't know, 
I think the OP code mostly speaks for itself and I don't even 
have much to add beyond it.


Re: Is this D or is it Javascript?

2013-07-08 Thread Adam D. Ruppe

On Monday, 8 July 2013 at 14:15:40 UTC, Adam D. Ruppe wrote:

Now I just have to decide what to actually write...


I wrote something but it is kinda meandering.

http://wiki.dlang.org/Dynamic_typing


Re: Is this D or is it Javascript?

2013-07-07 Thread Kagamin
Seems like vibe.d runs a blog http://vibed.org/blog/ doesn't it 
suit you?


Re: Is this D or is it Javascript?

2013-07-06 Thread Joseph Rushton Wakeling

On Saturday, 6 July 2013 at 00:27:45 UTC, Adam D. Ruppe wrote:
I really should either finish it or just give in and use a 
third party service or something (the closest I've come is this 
newsgroup!), since at least blog blabbing would be *some* 
documentation for half my random stuff, but just blargh, 
words cannot describe my hatred for WordPress and friends.


I used to think similarly, and spent years starting and never 
finishing websites using all sorts of different solutions. 
Finally I realized that, to run a blog, WordPress was actually by 
far the simplest solution.


YMMV of course. I've never felt the need to write my own plugins 
so never had to deal with the painful side of WordPress.


Re: Is this D or is it Javascript?

2013-07-06 Thread Paulo Pinto

Am 06.07.2013 02:27, schrieb Adam D. Ruppe:

On Friday, 5 July 2013 at 23:35:54 UTC, Andrei Alexandrescu wrote:

I think you really should put the code in shape and convert your
initial post into a blog entry.


You know, I have a lot of things I want to blab about, but the problem
is I don't have a blog! I'm slowly working on coding one (the off the
shelf ones are universally awful imo) but it isn't high priority so...
yeah.

I really should either finish it or just give in and use a third party
service or something (the closest I've come is this newsgroup!), since
at least blog blabbing would be *some* documentation for half my random
stuff, but just blargh, words cannot describe my hatred for
WordPress and friends.


It could be placed on the Wiki


Re: Is this D or is it Javascript?

2013-07-06 Thread Faux Amis

On 6-7-2013 08:57, Paulo Pinto wrote:

Am 06.07.2013 02:27, schrieb Adam D. Ruppe:

On Friday, 5 July 2013 at 23:35:54 UTC, Andrei Alexandrescu wrote:

I think you really should put the code in shape and convert your
initial post into a blog entry.


You know, I have a lot of things I want to blab about, but the problem
is I don't have a blog! I'm slowly working on coding one (the off the
shelf ones are universally awful imo) but it isn't high priority so...
yeah.

I really should either finish it or just give in and use a third party
service or something (the closest I've come is this newsgroup!), since
at least blog blabbing would be *some* documentation for half my random
stuff, but just blargh, words cannot describe my hatred for
WordPress and friends.


It could be placed on the Wiki

Yes!


Re: Is this D or is it Javascript?

2013-07-06 Thread Adam D. Ruppe
On Saturday, 6 July 2013 at 06:46:42 UTC, Joseph Rushton Wakeling 
wrote:
YMMV of course. I've never felt the need to write my own 
plugins so never had to deal with the painful side of WordPress.


That's really what killed me on it. I have one recurring work 
client who loves Wordpress, but always wants it customized in 
some way. New themes, new plugins, customized plugins from the 
web, etc.


And omg what a pain. BTW if you look at my github, you'll see a 
single php file, web.d.php, the main reason that exists was to 
ease integration of Wordpress with the core D application.



But even the user side doesn't impress me. The flash uploader 
they default to never works right for me, and it seems to me that 
to do anything beyond plain text, you have to write some html (or 
their silly [shortcodes]) anyway!


And then to top it off, WP is slw.


Re: Is this D or is it Javascript?

2013-07-05 Thread Rory McGuire
On Fri, Jul 5, 2013 at 5:21 AM, Adam D. Ruppe destructiona...@gmail.comwrote:

 [snip]

d rox.


!!! this is AWESOME!

Now one can use a mix of static and dynamic typing which is really nice
with document based databases.
Being able to script subsections of a website is also really interesting.
Nice bridge for javascript programmers to learn to use D.
Just need a decent wrapper on phobos to fix the naming of some stuff.


Re: Is this D or is it Javascript?

2013-07-05 Thread Rob T
There are many cases where you do not know in advance what type 
of data is being received through an interface to some other 
system. This happens with some databases, and with messaging 
systems, and if you are interfacing to any dynamically or weakly 
typed language, such as with js/json.


I will be looking at what you did closely, so thanks for sharing! 
I'll also look at the interpreter, many uses for something like 
that too.


Originally to solve these interfacing problems, I wrote a 
property tree implementation in C++ that used a dynamically typed 
variant similar to your var type. With a property tree, you can 
dynamically generate any hierarchical structure to multiple and 
varying depths, great to have when you have no idea what the 
structures will look like in advance.


For the variant type, I added in protection for strong typing, 
but it could be by-passed with automatic conversion (if possible) 
between types. I used it to create a generalized API for sqlite 
databases. Later on it was used for interfacing with messages 
recvd/sent via json over tcp.


Later after deciding to switch to D, the first thing I did was to 
re-write a similar property tree system in D, and the experience 
was much better although with one notable exception: Unlike in 
C++,  I could not create conversion operators that infer the 
receiving type when doing assignments from the variant, for 
example:


int i;
char c;
i = var;
c = var;

in C++ the correct getter for returning int or char will be 
called

eg

operator int(){...}
operator char(){...}

In D, I have to resort to something a manual system like this:

i = var.get!int;
c = var.get!char;

Not nearly as nice.

I suppose i could to this
c = var.get!(typeof(c));

Safer but very ugly and tedious.

My hope is if multiple alias ever arrives it will solve the 
conversion issue. Do you have any insight on how to solve the 
conversion problem using current D, and if you think multiple 
alias this will solve the problem?


--rt



Re: Is this D or is it Javascript?

2013-07-05 Thread Adam D. Ruppe

On Friday, 5 July 2013 at 22:51:57 UTC, Rob T wrote:

I suppose i could to this
c = var.get!(typeof(c));


Yeah, I did two things: int c = var.get!int; and

int c;
var v;
v.putInto(c);


[do] you think multiple alias this will solve the problem?


Maybe, but that would still be limited to a list of types. What 
would be ideal is if alias this or opImplicitCast existed, or 
implicit constructors like C++ has for function calls and 
could be a template:


T get(T)() { ...}

alias get this;

int a = v; // rewrites to v.get!(int)


That won't work in all cases, there will be some where the type 
requested is uncertain or ambiguous, but I'd say just go ahead 
and error out there or pass the original var, if possible, 
because this should cover most assignments.




But overall, I don't think the get!int is too bad. It is kinda 
nice to know where you are transitioning back into static typed 
world anyway.




BTW I'll push another commit to jsvar.d and script.d over the 
weekend. I got return/break/continue working now (in the cases 
I've tried at least, simple ones).


Re: Is this D or is it Javascript?

2013-07-05 Thread Andrei Alexandrescu

On 7/5/13 4:04 PM, Adam D. Ruppe wrote:

BTW I'll push another commit to jsvar.d and script.d over the weekend. I
got return/break/continue working now (in the cases I've tried at least,
simple ones).


I think you really should put the code in shape and convert your initial 
post into a blog entry. For a blog post at the level hmm, interesting 
I think you're already good to go. (An article would need more polishing.)


I'd be glad to post it to reddit on Monday morning. Let me know.


Andrei


Re: Is this D or is it Javascript?

2013-07-05 Thread MattCoder

On Friday, 5 July 2013 at 03:21:31 UTC, Adam D. Ruppe wrote:
Is any of this useful for anything? idk, maybe parsing json or 
maybe the script language could find use. But the real point 
I'm trying to make here is simply that...


d rox.


Awesome work, and I think it's a nice code to study more about D 
too.


PS: I just think that var is maybe too generic, I would 
called it as jsvar or anything like that, but this is just my 
opinion, anyway I liked your solution.


Matheus.


Re: Is this D or is it Javascript?

2013-07-05 Thread Rob T

On Friday, 5 July 2013 at 23:04:28 UTC, Adam D. Ruppe wrote:
Maybe, but that would still be limited to a list of types. What 
would be ideal is if alias this or opImplicitCast existed, or 
implicit constructors like C++ has for function calls and 
could be a template:


T get(T)() { ...}

alias get this;

int a = v; // rewrites to v.get!(int)



Yes that would be much better.

What I always wanted to see, was full signature overloading 
rather than only the partial signature overloading we currently 
have.


eg

int get();
char get();

int a = get(); // calls int foo()
char b = get(); // calls char foo()

Technically there's no reason why this won't work. The cases 
where there's ambiguity are virtually identical to what we 
already experience with partial signature overloading. I have no 
idea why this has not been seen as useful in most other 
languages, it seems like a natural extension of the overloading 
concept. I think only Haskel does something like it.


--rt


Re: Is this D or is it Javascript?

2013-07-05 Thread Adam D. Ruppe

On Friday, 5 July 2013 at 08:26:23 UTC, Rory McGuire wrote:
Just need a decent wrapper on phobos to fix the naming of some 
stuff.


That's fairly easy too:

import arsd.jsvar;
import arsd.script;

void main() {
var globals = var.emptyObject;
{
  import std.algorithm;
  var Math = globals.Math = var.emptyObject;
  Math.max = std.algorithm.max!(var, var);


// testing it in D
import std.stdio;
 // the second () is just because @property is 
broken

writeln(Math.max()(12, 24)); // prints 24

}
{
  import std.file;
  var File = globals.File = var.emptyObject;
  File.readText = readText!string;
}

import std.stdio;
writeln(interpret(Math.max(14, 33);, globals)); // 
prints 33
writeln(interpret(File.readText(\test29.d\);, 
globals)); // prints this file's source code

}


The opAssign function can wrap native functions pretty much 
automatically. The one thing, as you can see here, is they do 
need to be functions, not templates, so you might have to 
instantiate them all with some type. But that's no big deal.


I don't remember if I mentioned this or not too, but the opAssign 
and .get!T functions also can go to and from structs. Only the 
data members, the methods won't work since the this pointer for 
them would point to a var instead of the real type it expects, 
but the data members and pulled/filled in by name, coercing types 
as needed.



Anyway, if you did all these assignments, then you can make it 
all available with dynamic calling from D or from the script 
interpreter, without manually wrapping them.



It shouldn't be too hard to do a __traits(allMembers) over a 
module too if you wanted to pull it all in at once, perhaps even 
automatically instantiating the templates. But it would only work 
especially well for free functions, again, due to the delegate 
this problem. (Which I have an idea on how to solve - keep a copy 
of the real type around, and update its pieces by way of a proxy 
function that takes the name and searches for it, so the delegate 
this/context pointer is still sane, but it was kinda buggy so I 
dropped it. Another option would be to have other type tags 
available, not just generic Type.Object, but something like 
Type.NativeObject too that is added to the union. But meh, this 
is pretty cool as it is imo.)


Re: Is this D or is it Javascript?

2013-07-05 Thread Adam D. Ruppe

On Friday, 5 July 2013 at 23:58:30 UTC, Rob T wrote:
What I always wanted to see, was full signature overloading 
rather than only the partial signature overloading we currently 
have.


Indeed, that would be pretty cool.


Re: Is this D or is it Javascript?

2013-07-05 Thread Adam D. Ruppe

On Friday, 5 July 2013 at 23:51:16 UTC, MattCoder wrote:
PS: I just think that var is maybe too generic, I would 
called it as jsvar or anything like that, but this is just my 
opinion, anyway I liked your solution.


I just wanted the authentic javascript experience :P

You could also rename it with a selective import or something too.


Re: Is this D or is it Javascript?

2013-07-05 Thread Adam D. Ruppe

On Friday, 5 July 2013 at 23:35:54 UTC, Andrei Alexandrescu wrote:
I think you really should put the code in shape and convert 
your initial post into a blog entry.


You know, I have a lot of things I want to blab about, but the 
problem is I don't have a blog! I'm slowly working on coding one 
(the off the shelf ones are universally awful imo) but it isn't 
high priority so... yeah.


I really should either finish it or just give in and use a third 
party service or something (the closest I've come is this 
newsgroup!), since at least blog blabbing would be *some* 
documentation for half my random stuff, but just blargh, 
words cannot describe my hatred for WordPress and friends.


Re: Is this D or is it Javascript?

2013-07-05 Thread JS

On Saturday, 6 July 2013 at 00:27:45 UTC, Adam D. Ruppe wrote:
On Friday, 5 July 2013 at 23:35:54 UTC, Andrei Alexandrescu 
wrote:
I think you really should put the code in shape and convert 
your initial post into a blog entry.


You know, I have a lot of things I want to blab about, but the 
problem is I don't have a blog! I'm slowly working on coding 
one (the off the shelf ones are universally awful imo) but it 
isn't high priority so... yeah.


I really should either finish it or just give in and use a 
third party service or something (the closest I've come is this 
newsgroup!), since at least blog blabbing would be *some* 
documentation for half my random stuff, but just blargh, 
words cannot describe my hatred for WordPress and friends.


You could put something up on

http://www.codeproject.com/


Re: Is this D or is it Javascript?

2013-07-05 Thread Walter Bright

On 7/5/2013 5:27 PM, Adam D. Ruppe wrote:

On Friday, 5 July 2013 at 23:35:54 UTC, Andrei Alexandrescu wrote:

I think you really should put the code in shape and convert your initial post
into a blog entry.


You know, I have a lot of things I want to blab about, but the problem is I
don't have a blog! I'm slowly working on coding one (the off the shelf ones are
universally awful imo) but it isn't high priority so... yeah.

I really should either finish it or just give in and use a third party service
or something (the closest I've come is this newsgroup!), since at least blog
blabbing would be *some* documentation for half my random stuff, but just
blargh, words cannot describe my hatred for WordPress and friends.


Just register adamruppe.com, and use Ddoc!