I'm neutral. On Tue, Nov 3, 2015, 15:43 Matthew Robb <[email protected]> wrote:
> Isiah, could you elaborate some? I can't quite tell if you are expressing > support for my suggestion or not. Thanks! > On Nov 3, 2015 12:13 PM, "Isiah Meadows" <[email protected]> wrote: > >> Lol... I feel I'm in an insane minority that can work relatively >> productively in Java 7 and Haskell both. >> >> Of course, I have a preference, but that preference lies around that of >> OCaml and Clojure. It's more the expression-based, impure functional >> languages that I'm most productive in. Observing mutations that I react to >> using immutable data structures. Sounds very odd and/or blasphemous to >> some, but that's what I like. MVC models like that are how Mithril and >> similar smaller frameworks have started to get some attention. It prefers >> highly local state, and an observed object would be a great state model for >> that. >> >> And on that note, I'm going to stop before I derail the topic too far. >> >> On Tue, Nov 3, 2015, 11:26 Andrea Giammarchi <[email protected]> >> wrote: >> >>> That would make functional-programming-oriented developers wining >>> forever about such monstrosity in specs ... I'd personally love such >>> possibility! >>> >>> Regards >>> >>> On Tue, Nov 3, 2015 at 2:41 PM, Matthew Robb <[email protected]> >>> wrote: >>> >>>> I probably have a terrible understanding of how this all works at a low >>>> level but I feel like a potential solution would be a method of "upgrading" >>>> a non-proxy object to be a proxy. The reason accessors are being used as >>>> they are now is because you can retro fit them. Maybe what I am suggesting >>>> is essentially like swapping out the internal pointer of an object with >>>> another object (such as the way live module bindings work). In this way you >>>> might upgrade an existing object to behave like a proxy. >>>> >>>> >>>> - Matthew Robb >>>> >>>> On Tue, Nov 3, 2015 at 3:20 AM, Tom Van Cutsem <[email protected]> >>>> wrote: >>>> >>>>> >>>>> 2015-11-02 23:34 GMT+01:00 Coroutines <[email protected]>: >>>>>> >>>>>> I come from Lua. In Lua we make proxy objects with metamethods. You >>>>>> create an empty table/object and define a metatable with a __index and >>>>>> __newindex to catch accesses and changes when a key/property doesn't >>>>>> exist. I would primarily use this in sandboxes where I wanted to >>>>>> track the exact series of operations a user was performing to modify >>>>>> their environment (the one I'd stuck them in). >>>>> >>>>> >>>>> For this type of use case, you can use an ES6 Proxy < >>>>> https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy>. >>>>> You can think of the proxy handler's methods as the 'metamethods' of the >>>>> proxy object. >>>>> >>>>> What O.o would provide beyond Proxy is the ability to observe changes >>>>> to already pre-existing objects. However, since you mention you'd start >>>>> with an empty table/object, you should be able to create a fresh Proxy and >>>>> use that to trace all property accesses. >>>>> >>>>> Proxies are particularly well-suited when you want to sandbox things, >>>>> since you should be in control of the sandboxed environment anyway and can >>>>> set-up proxies to intermediate. O.o is particularly well-suited to >>>>> scenarios where there are already plenty of pre-existing objects and you >>>>> don't know ahead of time which ones to observe and which not. >>>>> >>>>> Cheers, >>>>> Tom >>>>> >>>>> _______________________________________________ >>>>> es-discuss mailing list >>>>> [email protected] >>>>> https://mail.mozilla.org/listinfo/es-discuss >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> es-discuss mailing list >>>> [email protected] >>>> https://mail.mozilla.org/listinfo/es-discuss >>>> >>>> >>> _______________________________________________ >>> es-discuss mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/es-discuss >>> >>
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

