I understand, but it's still a limitation of arrow functions that they rely
on arguments.callee to self-reference. Relying on the defined name
they're assigned to suffers from the "can be redefined" problem. NFE's
don't suffer this problem and can completely avoid `arguments` in ES6
for all use ca
On 17/03/2013, at 10:43, Claus Reinke wrote:
>> I understand, but it's still a limitation of arrow functions that they rely
>> on arguments.callee to self-reference. Relying on the defined name
>> they're assigned to suffers from the "can be redefined" problem. NFE's
>> don't suffer this problem a
On Sun, Mar 17, 2013 at 2:43 AM, Claus Reinke wrote:
> Neither arguments.callee (not available in strict) nor let (clumsy to
> use in expressions) are needed for self-reference
>
>var rec = (f) => f((...args)=>rec(f)(...args));
>
>var f = (self)=>(n)=> n>1 ? n*self(n-1) : n;
>
>[1,2,3,
On 17/03/2013, at 12:16, Jason Orendorff wrote:
> On Sun, Mar 17, 2013 at 2:43 AM, Claus Reinke wrote:
> Neither arguments.callee (not available in strict) nor let (clumsy to
> use in expressions) are needed for self-reference
>
>var rec = (f) => f((...args)=>rec(f)(...args));
>
>var f
>
> Sorry arrow functions but this isn't a better JS.
>
Bah. Arrow functions are a huge usability win for JS. Try them- you'll
see!
{ Kevin }
___
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
Just in case anyone does not realize that this thread is humorous,
const factorial = n => n>1 ? n*factorial(n-1) : 1;
Yes, you can't use this as an expression. So what? After this declaration
you can use factorial as an expression. Anonymous lambda expressions are a
wonderful things. But in a
;-)
How about the following (about which I’m serious)?
function defineRec(f) {
return args => f(f, ...args);
}
let factorial = defineRec((me, n) => n <= 1 ? 1 : n * me(me, n-1))
On Mar 17, 2013, at 14:33 , "Mark S. Miller" wrote:
> Just in case anyone does not realize that this thread i
Hi Andrea,
I'm really having a hard time understanding where the security issue is
here.
From what I understand, you've properly hidden the "Private" constructor.
I am not surprised if code can reach the [[Prototype]] of an instance
and I wouldn't consider that a flaw. I would consider that th
[Referring to Allen’s slides:
http://wiki.ecmascript.org/lib/exe/fetch.php?id=meetings%3Ameeting_jan_29_2013&cache=cache&media=meetings:subclassing_builtins.pdf
]
Is this really true?
I can see four ways of invoking a constructor function C:
1. As a function: C(...)
2. Via `new`: new C(...)
3.
My concern is about being unable to let "anyone" retrieve that property,
for introspection or to pollute it or change it being able to make my
private constructor insecure.
In the example there but in other situation I cannot freeze the prototype
and yet I cannot hide it from outside in a meaningfu
This is probably the most humor I've ever seen on esdiscuss.
On Mar 17, 2013, at 6:33 AM, "Mark S. Miller" wrote:
> Just in case anyone does not realize that this thread is humorous,
>
> const factorial = n => n>1 ? n*factorial(n-1) : 1;
>
> Yes, you can't use this as an expression. So wh
Hi,
Allen's latest draft (Rev. 14) contains the change where
[[Freeze]],[[Seal]] and [[PreventExtensions]] have been consolidated into
[[HasIntegrity]]/[[SetIntegrity]]. While no changes were made to the Proxy
API (i.e. no has/getIntegrity traps yet), the definition of
Object.{freeze,seal,preventE
Le 17/03/2013 18:09, Andrea Giammarchi a écrit :
My concern is about being unable to let "anyone" retrieve that
property, for introspection or to pollute it or change it being able
to make my private constructor insecure.
In the example there but in other situation I cannot freeze the
prototype
The incompatibility you've noticed is just a spec bug in
[[HasIntegrity]]. In step 2a of 8.3.3, the value of [[Extensible]] needs
to be inverted. With that change applied, the code snippet will return
`true`.
- André
Hi
Tom recently suggested that that we really don't need MOP-level or trap
operations from freezing, sealing and testing those states. Also, there seems
to be minimal support for having explicit freeze/sealed integrity states or for
adding integrity integrity states. So I'm probably going to go m
I don't think anybody has yet exploited the power of parameter default values
for defining recursive functions:
((fact=n=>n>1 ?n*fact(n-1):1)=>(fact))()
Allen
On Mar 17, 2013, at 7:39 AM, Axel Rauschmayer wrote:
> ;-)
>
> How about the following (about which I’m serious)?
>
> function de
Nice (in an IIFE-kind of way). If we had `do` expressions, the following would
also be possible (producing an expression that could be assigned anywhere and
to anything):
do {let fact = n=>n>1 ?n*fact(n-1):1}
I’m assuming that the completion value of a let declaration is the rhs of the
las
On Sat, Mar 16, 2013 at 7:56 PM, Allen Wirfs-Brock wrote:
>
> On Mar 16, 2013, at 4:42 PM, Tom Schuster wrote:
>
> > I would argue that the disclaimer makes this more confusing. I am
> > aware of the behavior that not passed parameters are undefined. But It
> > sounded like we would never execute
David I do not use, neither have a problem, with the example code but I
have used runtime prototype changes for state-machine like applications.
It is not possible to secure or make a class hidden, it was possible before
the introduction of __proto__ and Object.getPrototypeOf in ES3, now this is
g
On 17/03/2013, at 14:33, Mark S. Miller wrote:
> Just in case anyone does not realize that this thread is humorous,
>
> const factorial = n => n>1 ? n*factorial(n-1) : 1;
>
> Yes, you can't use this as an expression. So what? After this declaration you
> can use factorial as an expression.
Thanks!
> awbjs IOW, I’d write the check: if (typeof this !== "object" || !($fooBrand
> in this) || this[$fooBrand]) /*CAAF*/
>
> perhaps: if ( this ===null || typeof this !== "object" ||
> this[$fooBrand]!==undefined) /*CAAF*/
> if depends upon how the @@create method chooses to use as an "u
> if ( this ===null || typeof this !== "object" || this[$fooBrand] !==
> false) /*CAAF*/
>
> Then the last Or operand is true if either the instance has already been
> initialized or if `this` is an object that does not have a property whose key
> is $fooBrand (e.g. a namespace object). In
On Sun, Mar 17, 2013 at 7:10 PM, Jorge Chamorro wrote:
> On 17/03/2013, at 14:33, Mark S. Miller wrote:
>
> > Just in case anyone does not realize that this thread is humorous,
> >
> > const factorial = n => n>1 ? n*factorial(n-1) : 1;
> >
> > Yes, you can't use this as an expression. So what?
I know I am late to this party and I am not sure how serious it even is but
can someone help me understand why function expressions require anything
special to denote the fact that it's a function?
`
requestAnimationFrame(onFrame(time) { })
`
The following seems a pretty convenient side benefit:
On 18/03/2013, at 01:49, Rick Waldron wrote:
> snip
> ...and Brendan's point about backwards compatibility is irrefutable:
>
> https://mail.mozilla.org/pipermail/es-discuss/2012-January/019860.html
> snip
How is
ƒ fib(n) { ... }
any more backwards incompatible than
const fib = (n) => { ... };
On Sun, Mar 17, 2013 at 9:54 PM, Jorge Chamorro wrote:
> On 18/03/2013, at 01:49, Rick Waldron wrote:
>
> > snip
> > ...and Brendan's point about backwards compatibility is irrefutable:
> >
> > https://mail.mozilla.org/pipermail/es-discuss/2012-January/019860.html
> > snip
>
> How is
>
> ƒ fib(n)
On Sun, Mar 17, 2013 at 9:50 PM, Matthew Robb wrote:
> I know I am late to this party and I am not sure how serious it even is
> but can someone help me understand why function expressions require
> anything special to denote the fact that it's a function?
>
> `
> requestAnimationFrame(onFrame(tim
I went back to this old es-discuss thread:
http://www.mail-archive.com/es-discuss@mozilla.org/msg18408.html
which references a video segment from Mark Miller:
http://www.youtube.com/watch?v=Kq4FpMe6cRs&t=42m53s
giving four static scoping violations:
1. implicit global variable creation
2. `wit
28 matches
Mail list logo