[squeak-dev] I'd like to contribute to the JSON project
Eliot Miranda
eliot.miranda at gmail.com
Mon Nov 9 20:14:25 UTC 2020
On Mon, Nov 9, 2020 at 8:29 AM Thiede, Christoph <
Christoph.Thiede at student.hpi.uni-potsdam.de> wrote:
> > But I doubt that's what Christoph would like to have.
>
>
> That is right, I was assuming some kind of late-binding prototypical
> object model.
>
>
> For instance, a similar model seems to be used for JavaScript objects:
>
>
> > x = {}
> {}
> > x.foo
> undefined
> > x.hasOwnProperty('foo')
> false
> > x.foo = 42
> 42
> > x.foo
> 42
> > x.hasOwnProperty('foo')
> true
>
>
> However, I see your concerns, Levente ... My proposal would violate the
> contract "if and only if #respondsTo: returns true, sending the message
> will not cause a MNU", if there was any contract like. But do we need
> logical equivalency for such a contract or would simple causality ("if #respondsTo:
> returns true, then sending the message will not cause a MNU") suffice? Hm
> ...
>
If the doesNotUnderstand: is not visible externally then who cares? Isn't
the contract (o respondsTo: m) ifFalse: [self should: [o m] raise:
MessageNotUnderstood]], or respondsTo: not implies MNU ?
> Best,
>
> Christoph
>
> ------------------------------
> *Von:* Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im
> Auftrag von Levente Uzonyi <leves at caesar.elte.hu>
> *Gesendet:* Montag, 9. November 2020 15:17 Uhr
> *An:* The general-purpose Squeak developers list
> *Betreff:* Re: [squeak-dev] I'd like to contribute to the JSON project
>
> Hi Marcel,
>
> On Mon, 9 Nov 2020, Marcel Taeumel wrote:
>
> > Hi Levente.
> > Sounds right. If an object can answer to some extra messages via
> #doesNotUnderstand:, one should also override #respondsTo:. It is like #=
> and #hash.
>
> In that case JsonObject >> #respondsTo: should return true for all unary
> and one-argument keyword selectors. But I doubt that's what Christoph
> would like to have.
>
>
> Levente
>
> >
> > I did not know about #dictionaryClass:. That's a powerful hook.
> >
> > Best,
> > Marcel
> >
> > Am 09.11.2020 03:07:54 schrieb Levente Uzonyi <
> leves at caesar.elte.hu>:
> >
> > Hi Christoph,
> >
> > On Sun, 8 Nov 2020, Christoph Thiede wrote:
> >
> > > Hi Levente,
> > >
> > > would you mind to merge JSON-ct.41 (#respondsTo:) as well? This
> would be
> > > great because I depend on this functionality in another project
> and
> > > currently require your JSON fork in my baseline. :-)
> >
> > I cannot merge it because that would bring back long removed
> methods, and
> > MC wouldn't allow me to reject those.
> > But I can add the changes manually.
> > If I'm not mistaken, it's just a single method JsonObject >>
> #respondsTo:.
> >
> > What is the purpose of that method?
> > I'm asking because it has got no comment, so I'm not sure its
> > implementation is correct.
> > For example, should
> >
> > JsonObject new respondsTo: #foo:
> >
> > return false?
> > What should the following return?
> >
> > JsonObject new
> > foo: 1;
> > respondsTo: #foo:
> >
> > Another question is whether it is generally useful or not?
> > If it's not, you can still have the desired behavior by creating a
> > subclass. E.g.:
> >
> > JsonObject subclass: #PseudoObject
> > instanceVariableNames: ''
> > classVariableNames: ''
> > poolDictionaries: ''
> > category: 'PseudoObject'
> >
> >
> > PseudoObject >> respondsTo: aSymbol
> >
> > ^ (super respondsTo: aSymbol)
> > or: [self includesKey: aSymbol]
> >
> >
> > (Json new
> > dictionaryClass: PseudoObject;
> > readFrom: '{"foo": 42}' readStream)
> > respondsTo: #foo
> > "==> true"
> >
> >
> > Levente
> >
> > >
> > > Best,
> > > Christoph
> > >
> > >
> > >
> > > --
> > > Sent from: http://forum.world.st/Squeak-Dev-f45488.html
> Smalltalk - Squeak - Dev | Mailing List Archive
> <http://forum.world.st/Squeak-Dev-f45488.html>
> forum.world.st
> Squeak - Dev forum and mailing list archive. The general-purpose Squeak
> developers list
>
>
> >
> >
> >
>
>
>
--
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20201109/b0d321d8/attachment.html>
More information about the Squeak-dev
mailing list
|