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
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 and can
On Sun, Mar 17, 2013 at 2:43 AM, Claus Reinke claus.rei...@talk21.comwrote:
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)= n1 ? n*self(n-1) : n;
On 17/03/2013, at 12:16, Jason Orendorff wrote:
On Sun, Mar 17, 2013 at 2:43 AM, Claus Reinke claus.rei...@talk21.com wrote:
Neither arguments.callee (not available in strict) nor let (clumsy to
use in expressions) are needed for self-reference
var rec = (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 = n1 ? 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
;-)
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 erig...@google.com wrote:
Just in case anyone does not realize that
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 the
[Referring to Allen’s slides:
http://wiki.ecmascript.org/lib/exe/fetch.php?id=meetings%3Ameeting_jan_29_2013cache=cachemedia=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 meaningful
This is probably the most humor I've ever seen on esdiscuss.
On Mar 17, 2013, at 6:33 AM, Mark S. Miller erig...@google.com wrote:
Just in case anyone does not realize that this thread is humorous,
const factorial = n = n1 ? n*factorial(n-1) : 1;
Yes, you can't use this as an
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
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é
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
I don't think anybody has yet exploited the power of parameter default values
for defining recursive functions:
((fact=n=n1 ?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
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=n1 ?n*fact(n-1):1}
I’m assuming that the completion value of a let declaration is the rhs of the
last
On Sat, Mar 16, 2013 at 7:56 PM, Allen Wirfs-Brock al...@wirfs-brock.comwrote:
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
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
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 = n1 ? 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.
IIRC
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
On Sun, Mar 17, 2013 at 7:10 PM, Jorge Chamorro jo...@jorgechamorro.comwrote:
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 = n1 ? n*factorial(n-1) : 1;
Yes, you can't use this as an
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 jo...@jorgechamorro.comwrote:
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
ƒ
On Sun, Mar 17, 2013 at 9:50 PM, Matthew Robb matthewwr...@gmail.comwrote:
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?
`
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=Kq4FpMe6cRst=42m53s
giving four static scoping violations:
1. implicit global variable creation
2.
27 matches
Mail list logo