Is there a name for the following pattern?
doSomething: arg1
^ self doSomething: arg1 ifA: arg2Default
doSomething: arg1 ifA: arg2
^ self doSomething: arg1 ifA: arg2 ifB: arg3Default
View this message in context: http://forum.world.st/Nested-Degenerate-Convenience-Methods-tp4816719.html
Sent from the ESUG mailing list archive at Nabble.com.
Hi Sean, I'm using "implicit default" or "implicit argument" for the chains of less and less terse methods that eventually call the fully-explicit canonic one. There is a related idiom where the explicit argument is a block, and the implicit version either results in a sentinel value or signals an exception, e.g. ifAbsent/ifNone. This one I call "default case handler".
In either case, I'm not convinced the name is that clear, so if you get by a nice one, I'm interested.
On 01 Apr 2015, at 18:49, Sean P. DeNigris sean@clipperadams.com wrote:
Is there a name for the following pattern?
doSomething: arg1
^ self doSomething: arg1 ifA: arg2Default
doSomething: arg1 ifA: arg2
^ self doSomething: arg1 ifA: arg2 ifB: arg3Default
View this message in context: http://forum.world.st/Nested-Degenerate-Convenience-Methods-tp4816719.html
Sent from the ESUG mailing list archive at Nabble.com.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
--
Damien Pollet
type less, do more [ | ] http://people.untyped.org/damien.pollet
I would call that code an example of "convenience methods". In C, those
things would likely be implemented in terms of "macros". The term
"pattern" is overloaded, I wouldn't use it here.
On 4/1/15 9:49 , Sean P. DeNigris wrote:
Is there a name for the following pattern?
doSomething: arg1
^ self doSomething: arg1 ifA: arg2Default
doSomething: arg1 ifA: arg2
^ self doSomething: arg1 ifA: arg2 ifB: arg3Default
View this message in context: http://forum.world.st/Nested-Degenerate-Convenience-Methods-tp4816719.html
Sent from the ESUG mailing list archive at Nabble.com.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
I agree with Andres about calling it a convenience method (and also not
calling it a pattern), but is this not also an example of currying?
Best
Joseph
On 02.04.15 00:49, Andres Valloud wrote:
I would call that code an example of "convenience methods". In C, those
things would likely be implemented in terms of "macros". The term
"pattern" is overloaded, I wouldn't use it here.
On 4/1/15 9:49 , Sean P. DeNigris wrote:
Is there a name for the following pattern?
doSomething: arg1
^ self doSomething: arg1 ifA: arg2Default
doSomething: arg1 ifA: arg2
^ self doSomething: arg1 ifA: arg2 ifB: arg3Default
View this message in context:
http://forum.world.st/Nested-Degenerate-Convenience-Methods-tp4816719.html
Sent from the ESUG mailing list archive at Nabble.com.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
--
Joseph Pelrine [ | ]
MetaProg GmbH
Email: jpelrine@metaprog.com
Web: http://www.metaprog.com
As soon as you introduce people, things become complex.
... /me reads Wikipedia article ...
It sure looks like an example of currying!
On 4/1/15 22:14 , Joseph Pelrine wrote:
I agree with Andres about calling it a convenience method (and also not
calling it a pattern), but is this not also an example of currying?
Best
Joseph
On 02.04.15 00:49, Andres Valloud wrote:
I would call that code an example of "convenience methods". In C, those
things would likely be implemented in terms of "macros". The term
"pattern" is overloaded, I wouldn't use it here.
On 4/1/15 9:49 , Sean P. DeNigris wrote:
Is there a name for the following pattern?
doSomething: arg1
^ self doSomething: arg1 ifA: arg2Default
doSomething: arg1 ifA: arg2
^ self doSomething: arg1 ifA: arg2 ifB: arg3Default
View this message in context:
http://forum.world.st/Nested-Degenerate-Convenience-Methods-tp4816719.html
Sent from the ESUG mailing list archive at Nabble.com.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
Nested Degenerate Convenience Methods
I don't have a better name, but maybe a bit of critique helps:
I would say that these methods are degenerate when viewed from a
bottom-up perspective.
Thinking top-down we could say that some parameters are implied by the
environment (self in this case) hence such methods are more abstract.
I guess this might dovetail with Damiens suggestions depending on usage.
Is it a pattern when it is used in a situation to hide certain concerns
-- when it is used particularly to reach abstraction, to 'give'
abstraction to higher layers?
On 4/1/2015 6:49 PM, Sean P. DeNigris wrote:
Is there a name for the following pattern?
doSomething: arg1
^ self doSomething: arg1 ifA: arg2Default
doSomething: arg1 ifA: arg2
^ self doSomething: arg1 ifA: arg2 ifB: arg3Default
View this message in context: http://forum.world.st/Nested-Degenerate-Convenience-Methods-tp4816719.html
Sent from the ESUG mailing list archive at Nabble.com.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
I'd say it's similar to currying, but not actual currying.
This is more like partial function application:
http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_applicat
ion
but that only solves 2), not 1). Blocks can go all the way.
I'm not a functional programming expert, though!
Steve
Andres Valloud wrote April 2, 2015 11:38 AM:
... /me reads Wikipedia article ...
It sure looks like an example of currying!
On 4/1/15 22:14 , Joseph Pelrine wrote:
I agree with Andres about calling it a convenience method (and also
not
calling it a pattern), but is this not also an example of currying?
Best
Joseph
On 02.04.15 00:49, Andres Valloud wrote:
I would call that code an example of "convenience methods". In C,
those
things would likely be implemented in terms of "macros". The term
"pattern" is overloaded, I wouldn't use it here.
On 4/1/15 9:49 , Sean P. DeNigris wrote:
Is there a name for the following pattern?
doSomething: arg1
^ self doSomething: arg1 ifA: arg2Default
doSomething: arg1 ifA: arg2
^ self doSomething: arg1 ifA: arg2 ifB: arg3Default
View this message in context:
http://forum.world.st/Nested-Degenerate-Convenience-Methods-
tp4816719.html
Sent from the ESUG mailing list archive at Nabble.com.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org