On 18 juin 2013, at 13:09, Esteban Lorenzano wrote: > I do not like it :) I understand that (especially from a conservative who doesn't even like colors ;D ).
> > also, you already have #in: > which is more generic and allows simplifications: > > <my complex expression> in: [ :blah | > blah = myTest > ifTrue: [ blah some ] ] > ifFalse: [ blah other ] ] > > and also the advantage is that you are not restricted to #ifTrue:ifFalse: Yes I love #in: , that was my inspiration. if:do:, if:do:elseDo: and while:do: would just be a bit of sugar to use sparingly just like in:. > > Esteban > > On Jun 18, 2013, at 1:05 PM, Goubier Thierry <thierry.goub...@cea.fr> wrote: > >> >> >> Le 18/06/2013 12:27, Camille Teruel a écrit : >>> >>> On 18 juin 2013, at 11:20, Goubier Thierry wrote: >>> >>>> Hi Camille, >>>> >>>> It's not bad as things goes, because it does look a bit like >>>> non-smalltalk code (i.e. the if then else structure) except that the >>>> precise meaning is very much Smalltalk : >>> >>> Ok the name may be confusing. >>> So if you rename it to something like #if:do:elseDo:, it would be more >>> smalltalkish and there is no confusion with classical if-then-else. >> >> Maybe, that would help. >> >>>> if: has a receiver, and there is a not so intuitive relationship >>>> between the bloc parameters and the receiver. >>> >>> Talking to an arbitrary object is the goal, since booleans are not very >>> talkative kind of object. >>> Compare >>> >>> | temp | >>> temp := <complexExpression> >>> temp isNil ifTrue: [...] ifFalse: [... temp ...] >>> >>> with: >>> >>> <complexExpression> ifNil: [ ... ] ifNotNil: [ :obj | ... obj ...] >>> >>> ifNil:ifNotNil: is not better only because it is shorter, it is better >>> because I am talking to the object I am auditing, not a stupid boolean >>> that knows nothing else but its truth value. >> >> Yes, but I know firsthand (because I used Smalltalk before that idiom was >> introduced) that it represent one more idiom to learn, and it's still not >> familiar. >> >> The same goes with withStreamDo: or what is that idiom again I sometimes >> encounter. >> >>>> Honestly, as far as code reviews goes, I'll prefer the temp >>>> refactoring. Understandable without having to search for the >>>> implementors of #if:then:else: >>> >>> I know this would break a long time tradition and people may not like >>> it, so that's a question of taste and style, not understandability. >>> There would be only one implementor, the implementation is really simple >>> and the selector is explicit. >> >>> Anyone can get use to it in less than 2 min. >> >> It's one more thing to get used to and to explain to beginners in say 10 >> minutes per idiom... (describe, give an example, let them practice, rinse >> and repeat for each idiom). >> >> Add all the new idioms and, instead of explaining Smalltalk in half a day, >> you spend a few days doing explaining all those idioms and not doing more >> interesting stuff. >> >> Soon, you end up like ocaml, where your minimum introduction time is a week, >> not half a day. >> >>> Do everyone verify the implementors of do: , collect: , ifTrue:ifFalse: >>> ,... every time? >> >>> No because people learned what they do when they learned Smalltalk, and >>> I'm sure it didn't get them more than a few minutes. >> >> Yes, but add the ifNil: ifNotNil:, stream thingies I never remember, your >> variant of if-else, and, and ... On some of those, I have to look for the >> implementors, and I'm really happy to benefit from the smart suggestions in >> the new browsers. (Additionally, code patterns using cull: in pharo more >> often than not are very poorly documented about the arguments that are given >> to the block). >> >> Smalltalk is disruptive enough as it is (and still is after all those years) >> to try not to make it more complex. I'd prefer efforts making obvious really >> complex patterns instead of idioms with a not so great cognitive load to >> effectiveness. >> >> I'd be happy to have a shorter list of methods and extensions on Object, as >> well :) >> >> Thierry >> -- >> Thierry Goubier >> CEA list >> Laboratoire des Fondations des Systèmes Temps Réel Embarqués >> 91191 Gif sur Yvette Cedex >> France >> Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95 >> > >