On Wed, 21 Aug 2019, Tobias Pape wrote:
> >> On 21.08.2019, at 11:57, Levente Uzonyi <[hidden email]> wrote: >> >> Hi Marcel, >> >> I suppose you meant #asSimpleSetter, but that is not an exact substitute. >> >> Case #1: >> #foo: asSimpleSetter "==> #'foo::'" >> #foo: asMutator "==> #foo:" >> >> Case #2: >> #'' asSimpleSetter "==> #':'" >> #'' asMutator "==> Error: subscript is out of bounds: 0" >> >> So, if the plan is to go with the name #asSimpleSetter, I suggest the implementation should keep the behavior of #asMutator in Case #1. > > +1 > >> Also, #copyWith: is faster than #,. :) > > yeah, but #, is the canonical concatenation for Smalltalk. > I see no reason to optimize. You don't want to concatenate strings here, but to append a character to the end of a string. And that's exactly what #copyWith: does. I see no reason not to keep the optimized version. And that's what you +1'd above, isn't it? Levente > >> >> >> Levente >> >> On Wed, 21 Aug 2019, Marcel Taeumel wrote: >> >>> #isSimpleSetter :-) >>> Best, >>> Marcel >>> >>> Am 20.08.2019 21:33:47 schrieb Levente Uzonyi <[hidden email]>: >>> >>> On Tue, 20 Aug 2019, [hidden email] wrote: >>> >>> > I finally came around to finish this. Please find attached a changeset which: >>> > - deprecates #asMutator and removes #isMutator >>> >>> What will be the replacement for #asMutator? >>> >>> Levente >>> >>> > - refactors existing calls to #asSimpleSetter >>> > - moves #as*Setter to the category System-Support >>> > >>> > Depending on further comments I would merge these in the next days/weeks. >>> > >>> > Bests >>> > Patrick >>> > >>> >> Sounds good to me! >>> >> >>> >> How about the following: I would deprecate #asMutator/#isMutator in favor of #asSimpleSetter and #isSimpleSetter. At the same time I would move the #asSimpleSetter up from Symbol to String where >>> #asSetterSelector already resides. Finally, I would move both pairs of selectors to the Tools (or System or Compiler?) package (I would rather not keep them scattered across MorphicExtras and Etoys as common >>> selectors would then also be used by System). >>> >> >>> >> Bests, >>> >> Patrick >>> >> >>> >>> >>> >>> >>> >>> On Thu, Mar 21, 2019 at 1:03 PM Chris Muller wrote: >>> >>> >>> >>> My main objection is about growing the "mutator" nomenclature further >>> >>> instead of trimming it back. >>> >>> >>> >>> >>> >>> +1 >>> >>> >>> >>> I'm working on a GraphQL framework. >>> >>> GraphQL has a first-class notion of "mutations". >>> >>> >>> >>> https://graphql.org/learn/queries/ >>> >>> >>> >>> Currently, we have almost zero mention of the word >>> >>> "mutator" in the image. I would appreciate if, instead of germinating >>> >>> the overloading the word, we uproot it and keep the nomenclature for >>> >>> this Smalltalk tooling confined to "getter" and "setter" that we have >>> >>> now. >>> >>> >>> >>> >>> >>> +1 >>> >>> >>> >>> So, instead of #asMutator and #isMutator, how about #asSimpleSetter and >>> >>> #isSimpleSetter? >>> >>> >>> >>> >>> >>> +1 >>> >>> >>> >>> >>> >>> We can end up removing a method instead of adding one. We already >>> >>> have many existing methods which are dealing with this conversion, all >>> >>> of which use the traditional Smalltalk / developer linguisitic of >>> >>> "setter". Browsing through all the "setter" nomenclature we have in a >>> >>> message names browser, including >>> >>> >>> >>> Utilities class>>#getterSelectorFor: >>> >>> Utilities class>>#setterSelectorFor: >>> >>> Utilities class>>#simpleSetterFor: >>> >>> >>> >>> which instruct Etoys users to use existing methods on String, >>> >>> #asSetterSelector or #asSimpleSetter. >>> >>> >>> >>> Of special note is SyntaxMorph>>#isStandardSetterKeyword: which, by >>> >>> its use of a utility-method implementation, acknowledges that this >>> >>> behavior is _application-specific_. >>> >>> >>> >>> I, myself, would just write: >>> >>> >>> >>> someSelector asSimpleSetter = someSelector "same as isMutator / >>> >>> isSimpleSetter" >>> >>> >>> >>> instead of #isSimpleSetter, but can appreciate both styles. They both >>> >>> better avoid the awkwardness of "mutator" as a general, reliable >>> >>> behavior when: >>> >>> >>> >>> #at: isMutator "true" >>> >>> >>> >>> while >>> >>> >>> >>> #at:put: isMutator "false" >>> >>> >>> >>> >>> >>> +1000. Chris is right. isMutator is a mistake. >>> >>> >>> >>> >>> >>> Best, >>> >>> Chris >>> >>> >>> >>> >>> >>> >>> >>> On Thu, Mar 21, 2019 at 1:16 AM wrote: >>> >>>> >>> >>>> Which one are you refering to? I only see Symbol>>#asMutator in Collections in the method category converting. It is also used in a few other places beyond generating instance variable accessors. >>> >>>> >>> >>>> Bests, >>> >>>> Patrick >>> >>>> >>> >>>>> #asMutator: is for "generate instVar accessors" code-generation, and >>> >>>>> that's why it's in the Tools package. >>> >>>>> >>> >>>>> IMHO, if #isMutator belongs anywhere, it isn't in Collections. >>> >>>>> >>> >>>>> Regards, >>> >>>>> Chris >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> On Wed, Mar 20, 2019 at 3:08 PM Chris Muller wrote: >>> >>>>>> >>> >>>>>> Assuming a single-keyword is a mutator? Object>>#at: is not a >>> >>>>>> mutator. #indexOf: is not. #first: is not. Obviously many more.. >>> >>>>>> >>> >>>>>> If API balance is the goal of this, perhaps #asMutator should be >>> >>>>>> removed instead. This feels application-specific... >>> >>>>>> >>> >>>>>> On Wed, Mar 20, 2019 at 2:05 PM wrote: >>> >>>>>>> >>> >>>>>>> Patrick Rein uploaded a new version of Collections to project The Trunk: >>> >>>>>>> http://source.squeak.org/trunk/Collections-pre.822.mcz >>> >>>>>>> >>> >>>>>>> ==================== Summary ==================== >>> >>>>>>> >>> >>>>>>> Name: Collections-pre.822 >>> >>>>>>> Author: pre >>> >>>>>>> Time: 20 March 2019, 8:05:20.383677 pm >>> >>>>>>> UUID: 483c4461-cee4-4a4f-82d3-fbc03e7201cc >>> >>>>>>> Ancestors: Collections-dtl.821 >>> >>>>>>> >>> >>>>>>> Adds #isMutator to Symbol which is analogous to asMutator. >>> >>>>>>> >>> >>>>>>> =============== Diff against Collections-dtl.821 =============== >>> >>>>>>> >>> >>>>>>> Item was added: >>> >>>>>>> + ----- Method: Symbol>>isMutator (in category 'testing') ----- >>> >>>>>>> + isMutator >>> >>>>>>> + >>> >>>>>>> + ^ self isKeyword and: [self numArgs = 1]! >>> >>>>>>> >>> >>>>>>> >>> >>>>> >>> >>>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> _,,,^..^,,,_ >>> >>> best, Eliot --000000000000004a690584a05ffa-- >>> >> >>> > ["mutatorAndSetter.1.cs"] >>> >> |
In reply to this post by Levente Uzonyi
Hi Patrick,
On Wed, 21 Aug 2019, [hidden email] wrote: > Hi Levente, > > this is what the new implementation in the changeset does, it replace the implementation of asSimpleSetter with the implementation from asMutator :) Do you think the behavior of #asSimpleSetter in Case #2 is worth having? I just checked the change set. It looks good to me. So, no, it's not worth to keep #'' asSimpleSetter = #':' in my opinion. Levente > > Bests > Patrick > >> Hi Marcel, >> >> I suppose you meant #asSimpleSetter, but that is not an exact substitute. >> >> Case #1: >> #foo: asSimpleSetter "==> #'foo::'" >> #foo: asMutator "==> #foo:" >> >> Case #2: >> #'' asSimpleSetter "==> #':'" >> #'' asMutator "==> Error: subscript is out of bounds: 0" >> >> So, if the plan is to go with the name #asSimpleSetter, I suggest the >> implementation should keep the behavior of #asMutator in Case #1. >> Also, #copyWith: is faster than #,. :) >> >> >> Levente >> >> On Wed, 21 Aug 2019, Marcel Taeumel wrote: >> >>> #isSimpleSetter :-) >>> Best, >>> Marcel >>> >>> Am 20.08.2019 21:33:47 schrieb Levente Uzonyi <[hidden email]>: >>> >>> On Tue, 20 Aug 2019, [hidden email] wrote: >>> >>> > I finally came around to finish this. Please find attached a changeset which: >>> > - deprecates #asMutator and removes #isMutator >>> >>> What will be the replacement for #asMutator? >>> >>> Levente >>> >>> > - refactors existing calls to #asSimpleSetter >>> > - moves #as*Setter to the category System-Support >>> > >>> > Depending on further comments I would merge these in the next days/weeks. >>> > >>> > Bests >>> > Patrick >>> > >>> >> Sounds good to me! >>> >> >>> >> How about the following: I would deprecate #asMutator/#isMutator in favor of #asSimpleSetter and #isSimpleSetter. At the same time I would move the #asSimpleSetter up from Symbol to String where >>> #asSetterSelector already resides. Finally, I would move both pairs of selectors to the Tools (or System or Compiler?) package (I would rather not keep them scattered across MorphicExtras and Etoys as common >>> selectors would then also be used by System). >>> >> >>> >> Bests, >>> >> Patrick >>> >> >>> >>> >>> >>> >>> >>> On Thu, Mar 21, 2019 at 1:03 PM Chris Muller wrote: >>> >>> >>> >>> My main objection is about growing the "mutator" nomenclature further >>> >>> instead of trimming it back. >>> >>> >>> >>> >>> >>> +1 >>> >>> >>> >>> I'm working on a GraphQL framework. >>> >>> GraphQL has a first-class notion of "mutations". >>> >>> >>> >>> https://graphql.org/learn/queries/ >>> >>> >>> >>> Currently, we have almost zero mention of the word >>> >>> "mutator" in the image. I would appreciate if, instead of germinating >>> >>> the overloading the word, we uproot it and keep the nomenclature for >>> >>> this Smalltalk tooling confined to "getter" and "setter" that we have >>> >>> now. >>> >>> >>> >>> >>> >>> +1 >>> >>> >>> >>> So, instead of #asMutator and #isMutator, how about #asSimpleSetter and >>> >>> #isSimpleSetter? >>> >>> >>> >>> >>> >>> +1 >>> >>> >>> >>> >>> >>> We can end up removing a method instead of adding one. We already >>> >>> have many existing methods which are dealing with this conversion, all >>> >>> of which use the traditional Smalltalk / developer linguisitic of >>> >>> "setter". Browsing through all the "setter" nomenclature we have in a >>> >>> message names browser, including >>> >>> >>> >>> Utilities class>>#getterSelectorFor: >>> >>> Utilities class>>#setterSelectorFor: >>> >>> Utilities class>>#simpleSetterFor: >>> >>> >>> >>> which instruct Etoys users to use existing methods on String, >>> >>> #asSetterSelector or #asSimpleSetter. >>> >>> >>> >>> Of special note is SyntaxMorph>>#isStandardSetterKeyword: which, by >>> >>> its use of a utility-method implementation, acknowledges that this >>> >>> behavior is _application-specific_. >>> >>> >>> >>> I, myself, would just write: >>> >>> >>> >>> someSelector asSimpleSetter = someSelector "same as isMutator / >>> >>> isSimpleSetter" >>> >>> >>> >>> instead of #isSimpleSetter, but can appreciate both styles. They both >>> >>> better avoid the awkwardness of "mutator" as a general, reliable >>> >>> behavior when: >>> >>> >>> >>> #at: isMutator "true" >>> >>> >>> >>> while >>> >>> >>> >>> #at:put: isMutator "false" >>> >>> >>> >>> >>> >>> +1000. Chris is right. isMutator is a mistake. >>> >>> >>> >>> >>> >>> Best, >>> >>> Chris >>> >>> >>> >>> >>> >>> >>> >>> On Thu, Mar 21, 2019 at 1:16 AM wrote: >>> >>>> >>> >>>> Which one are you refering to? I only see Symbol>>#asMutator in Collections in the method category converting. It is also used in a few other places beyond generating instance variable accessors. >>> >>>> >>> >>>> Bests, >>> >>>> Patrick >>> >>>> >>> >>>>> #asMutator: is for "generate instVar accessors" code-generation, and >>> >>>>> that's why it's in the Tools package. >>> >>>>> >>> >>>>> IMHO, if #isMutator belongs anywhere, it isn't in Collections. >>> >>>>> >>> >>>>> Regards, >>> >>>>> Chris >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> On Wed, Mar 20, 2019 at 3:08 PM Chris Muller wrote: >>> >>>>>> >>> >>>>>> Assuming a single-keyword is a mutator? Object>>#at: is not a >>> >>>>>> mutator. #indexOf: is not. #first: is not. Obviously many more.. >>> >>>>>> >>> >>>>>> If API balance is the goal of this, perhaps #asMutator should be >>> >>>>>> removed instead. This feels application-specific... >>> >>>>>> >>> >>>>>> On Wed, Mar 20, 2019 at 2:05 PM wrote: >>> >>>>>>> >>> >>>>>>> Patrick Rein uploaded a new version of Collections to project The Trunk: >>> >>>>>>> http://source.squeak.org/trunk/Collections-pre.822.mcz >>> >>>>>>> >>> >>>>>>> ==================== Summary ==================== >>> >>>>>>> >>> >>>>>>> Name: Collections-pre.822 >>> >>>>>>> Author: pre >>> >>>>>>> Time: 20 March 2019, 8:05:20.383677 pm >>> >>>>>>> UUID: 483c4461-cee4-4a4f-82d3-fbc03e7201cc >>> >>>>>>> Ancestors: Collections-dtl.821 >>> >>>>>>> >>> >>>>>>> Adds #isMutator to Symbol which is analogous to asMutator. >>> >>>>>>> >>> >>>>>>> =============== Diff against Collections-dtl.821 =============== >>> >>>>>>> >>> >>>>>>> Item was added: >>> >>>>>>> + ----- Method: Symbol>>isMutator (in category 'testing') ----- >>> >>>>>>> + isMutator >>> >>>>>>> + >>> >>>>>>> + ^ self isKeyword and: [self numArgs = 1]! >>> >>>>>>> >>> >>>>>>> >>> >>>>> >>> >>>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> _,,,^..^,,,_ >>> >>> best, Eliot --000000000000004a690584a05ffa-- >>> >> >>> > ["mutatorAndSetter.1.cs"] >>> >>> >>> >> |
Free forum by Nabble | Edit this page |