RE: [Pharo-users] Block evaluation with n+1 arguments
"Richard Sargent" <[email protected]> Mon, 10 Apr 2023 09:24:46 -0700
| Newsgroups | gmane.comp.lang.smalltalk.vwnc |
|---|---|
| Organization | 5x5 Computing Solutions, Inc. |
| Message-ID | <039401d96bc8$f7cbcc60$e7636520$__43084.7807017685$1681143956$gmane$org@5x5.on.ca> |
Excellent write up, Stephane! I will add that over the years, there have been many times (countless!) when developing/debugging involved a complex block and that turned out to be significant nuisance. I can elaborate on the details, but once a block gets passed around, revising it on the fly breaks debug and continue. Having a block comprise a single message send allows one to revise that method as and when needed. From: [email protected] <[email protected]> On Behalf Of [email protected] Sent: April 10, 2023 07:03 To: Any question about pharo is welcome <[email protected]> Cc: [email protected] Subject: Re: [vwnc] [Pharo-users] Block evaluation with n+1 arguments BTW to me when a block needs too many arguments it feels like that an object has to be born :) With an object I can just sent or not a given extra argument. Now I do not know enough your specific context but what I learned is that complex blocks are difficult to follow, manipulate… so I keep block as simple as possible and else I create little objects. This is a little lectures from a super cool forthcoming mooc https://urldefense.com/v3/__https://rmod-files.lille.inria.fr/DesignCoffeeClub/ForLearningLab/7-Lang-04-BlocksVsObjects.pdf__;!!DZ3fjg!463LXMsEoOSzarVYAtND6R0r67IFvqHMylPFd1mzLkiEjT3FWcaVY-sIrMQCYizwHW6M7Qd66vTU-56ij3WubyTb_spk$ <https://urldefense.com/v3/__https:/rmod-files.lille.inria.fr/DesignCoffeeClub/ForLearningLab/7-Lang-04-BlocksVsObjects.pdf__;!!DZ3fjg!7bRnSLpPY1OiW_EoNtvSDBVMfYN5owvLQjTs_FdNbynPLMw7hmdZCNifkawlO9Hz-NbVkGnnh37u3XIaEJEAHjFBHHppJxSeBgY$> On 6 Apr 2023, at 15:28, Steffen Märcker <[email protected] <mailto:[email protected]> > wrote: Hi! I want to evaluate a block an argument 'arg1' and additional n arguments given in an array 'args'. The following code does the trick: block valueWithArguments: (Array with: arg1) , args. Is there a way to do this without the overhead of creating a new Array? (How) Can I add additional #value:value:[...] methods to BlockClosure that evaluate the block with n arguments directly without falling back to #valueWithArguments: ? If yes, what's the maximum? Cheers! Steffen