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: vwnc-request@lists.cs.illinois.edu <vwnc-request@lists.cs.illinois.edu> On Behalf Of stephane.ducasse@free.fr
Sent: April 10, 2023 07:03
To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
Cc: vwnc@lists.cs.illinois.edu
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://rmod-files.lille.inria.fr/DesignCoffeeClub/ForLearningLab/7-Lang-04-BlocksVsObjects.pdf
��
��
On 6 Apr 2023, at 15:28, Steffen M��rcker <merkste@web.de> 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��