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