Partial evaluation in JavaScript - Javascript
This is a discussion on Partial evaluation in JavaScript - Javascript ; I recently started playing with the idea of writing a partial evaluator
for JavaScript in JavaScript. I have tried to build a minimal
proof-of-concept by extending Crockford's Pratt parser for 'simplified'
JavaScript [1].
The current (very experimental) version extends Function.prototype ...
-
Partial evaluation in JavaScript
I recently started playing with the idea of writing a partial evaluator
for JavaScript in JavaScript. I have tried to build a minimal
proof-of-concept by extending Crockford's Pratt parser for 'simplified'
JavaScript [1].
The current (very experimental) version extends Function.prototype with
a specialize function so e.g.,
var mk_tag = function(tag,clz,cont) {
return "<"+tag+" class='"+clz+"'>"+cont+"</"+tag+">";
};
var mk_div_green = mk_tag.specialize({tag:'div', clz: 'green'});
mk_div_green("Pratt rocks!");
//result: <div class='green'>Pratt rocks!</div>
I've started an open source project, Jeene [2], and I thought you
hardcore JavaScripters might be interested. There are some portability
issues, e.g., it depends on Function.prototype.toString to obtain a
parseable representation of a function. A problem here is that
ECMAScript 3 says that the result of toString is "implementation
dependent". I am hoping for project Harmony to strengthen the contract
on toString, but I don't feel sure that will happen ;-)
Anyway, hope to have triggered some interest!
--
/Karl
[1] <http://javascript.crockford.com/tdop/tdop.html>
[2] <http://code.google.com/p/jeene>
-
Re: Partial evaluation in JavaScript
Karl Tikjøb Krukow schreef:
> I recently started playing with the idea of writing a partial evaluator
> for JavaScript in JavaScript. I have tried to build a minimal
> proof-of-concept by extending Crockford's Pratt parser for 'simplified'
> JavaScript [1].
>
> The current (very experimental) version extends Function.prototype with
> a specialize function so e.g.,
>
> var mk_tag = function(tag,clz,cont) {
> return "<"+tag+" class='"+clz+"'>"+cont+"</"+tag+">";
> };
>
> var mk_div_green = mk_tag.specialize({tag:'div', clz: 'green'});
>
> mk_div_green("Pratt rocks!");
> //result: <div class='green'>Pratt rocks!</div>
>
>
> I've started an open source project, Jeene [2], and I thought you
> hardcore JavaScripters might be interested. There are some portability
> issues, e.g., it depends on Function.prototype.toString to obtain a
> parseable representation of a function. A problem here is that
> ECMAScript 3 says that the result of toString is "implementation
> dependent". I am hoping for project Harmony to strengthen the contract
> on toString, but I don't feel sure that will happen ;-)
>
> Anyway, hope to have triggered some interest!
>
Hi Karl,
I checked your site: http://code.google.com/p/jeene/
It is not clear to me what it is you are building.
I do not want to lessen your enthousiasm, but what is the point of the
project?
If somebody needs to make a div, that is easy enough in JavaScript (and
HTML).
If you need to change an existing span/div to a certain class: that is
easy too.
Where does JEENE[2] come into the picture?
What is it excactly you want to build??
Regards,
Erwin Moller
--
============================
Erwin Moller
Now dropping all postings from googlegroups.
Why? http://improve-usenet.org/
============================
-
Re: Partial evaluation in JavaScript
Erwin Moller wrote:
>
>
> Hi Karl,
>
> I checked your site: http://code.google.com/p/jeene/
> It is not clear to me what it is you are building.
> I do not want to lessen your enthousiasm, but what is the point of the
> project?
Don't worry other people have already done that ;-)
The point of the project is to build a program specializer (= partial
evaluator). In the case of Jeene, a program specializer takes as input a
general function of several parameters and produces a specialized
function of fewer parameters by fixing the values of some of the
parameters. The point being that the specialized function is often much
more efficient.
The HTML tag was just an example to illustrate the flexibility and
efficiency aspects.
Was that helpful?
--
/Karl
-
Re: Partial evaluation in JavaScript
Karl Tikjøb Krukow schreef:
> Erwin Moller wrote:
>>
>>
>> Hi Karl,
>>
>> I checked your site: http://code.google.com/p/jeene/
>> It is not clear to me what it is you are building.
>> I do not want to lessen your enthousiasm, but what is the point of the
>> project?
>
> Don't worry other people have already done that ;-)
Ah good.
I hate being negative when somebody starts with a new initiative.
>
> The point of the project is to build a program specializer (= partial
> evaluator). In the case of Jeene, a program specializer takes as input a
> general function of several parameters and produces a specialized
> function of fewer parameters by fixing the values of some of the
> parameters. The point being that the specialized function is often much
> more efficient.
>
>
> The HTML tag was just an example to illustrate the flexibility and
> efficiency aspects.
>
> Was that helpful?
Partial. ;-)
Could you give us a more real life example where Jeene could be helpful?
I already told you why your earlier example was little convincing (for me).
Regards,
Erwin Moller
--
============================
Erwin Moller
Now dropping all postings from googlegroups.
Why? http://improve-usenet.org/
============================
-
Re: Partial evaluation in JavaScript
I guess what Karl plans to implement is something like Default
Arguements in C++ and PHP.
for example, we have this base method at first:
function baseMethod(arg1, arg2){
alert("This is a base method with arg2 is " + arg2);
}
now, if I invoke it like this:
baseMethod("value of arg1");
it will popup "This is a base method with arg2 is undefined" (in IE).
as for Karl's solution, now i can create another "extend" method:
var extendMethod = baseMethod.specialize({arg2: "default value of
arg2"});
then, invoke
extendMethod("value of arg1");
the popup msg becomes "This is a base method with arg2 is default
value of arg2".
But at least now, i didnot see large valuable thing in it.
maybe i've missed something, please correct me, karl
thanks
luke
Erwin Moller wrote:
> Karl Tikj�b Krukow schreef:
> > Erwin Moller wrote:
> >>
> >>
> >> Hi Karl,
> >>
> >> I checked your site: http://code.google.com/p/jeene/
> >> It is not clear to me what it is you are building.
> >> I do not want to lessen your enthousiasm, but what is the point of the
> >> project?
> >
> > Don't worry other people have already done that ;-)
>
> Ah good.
> I hate being negative when somebody starts with a new initiative.
>
> >
> > The point of the project is to build a program specializer (= partial
> > evaluator). In the case of Jeene, a program specializer takes as input a
> > general function of several parameters and produces a specialized
> > function of fewer parameters by fixing the values of some of the
> > parameters. The point being that the specialized function is often much
> > more efficient.
> >
> >
> > The HTML tag was just an example to illustrate the flexibility and
> > efficiency aspects.
> >
> > Was that helpful?
>
> Partial. ;-)
>
> Could you give us a more real life example where Jeene could be helpful?
> I already told you why your earlier example was little convincing (for me).
>
> Regards,
> Erwin Moller
>
>
> --
> ============================
> Erwin Moller
> Now dropping all postings from googlegroups.
> Why? http://improve-usenet.org/
> ============================