It reminds me of Javascript there you have similar constructs via apply() and i tend to think that the name is not too bad either.

#(1 2 3) apply:[:a :b :c | ]

I am a bit sceptic about the idea though. Given the examples you provided i do think it���s a neat solution but when i consider:

  (('2020-03-28' tokensBasedOn: $-) collect: #asNumber) destructDo: [:year :month :day |
                               Date newDay: day monthNumber: month year: year]

I���m sure that the input string is not a literal because then this whole code doesn���t make much sense at all.
But when the string is not literal, no-one can guarantee the correctness of the string. 
I���ve seen you use #cull: in the implementation so at least there���s no error if the number of arguments is smaller than the collection. But what happens the other way around?
Maybe you should call #valueWithArguments: and ensure that the arguments are filled up with nil.

Other than that i hope such a construct doesn���t lure people to use tupel-like arrays. That just produces the hardest-to-understand code ever.

Kind Regards
Karsten


��� 

Georg Heeg eK
Wallstra��e 22
06366 K��then

Tel.: 03496/214328
FAX: 03496/214712
Amtsgericht Dortmund HRA 12812


Am 28. M��rz 2020 bei 14:36:11, Giovanni Corriga (giovanni@corriga.net) schrieb:

How about #consume: ?

Il giorno sab 28 mar 2020 alle ore 13:20 Norbert Hartl <norbert@hartl.name> ha scritto:
I think the name destructDo: comes from destructuring assignment. 


Norbert

Am 28.03.2020 um 14:15 schrieb Mark Plas <mark.plas@mediagenix.tv>:

Hello Christian,
 
" I don���t really like the name,"
 
Maybe you could call it #tupleDo:?
 
                #(1 2 3) tupleDo: [:a :b :c | ���]
 
Mark
 

 

Mark Plas

Software Engineer
T +32 2 467 34 30

mark.plas@mediagenix.tv

 

<logomgxnew_3d44337b-2535-4d6a-9f5f-3fdd565513ca.png>

 

Nieuwe Gentsesteenweg 21/1

1702 Groot-Bijgaarden - Belgium

 <linkedin_75b9c4f1-6a2b-497c-aab8-df56fe16b8e3.png> <twitter_de4c3300-c6ab-4898-a962-b33ff662a322.png><Facebook-icon_6bef7545-f54e-4548-bfc4-1f07407f2642.png>www.mediagenix.tv

Directions to MEDIAGENIX

 

This e-mail and any files attached to it are confidential and intended only for the use of the individuals or entity to whom they are addressed. If you have received this e-mail in error, please notify the sender immediately.

From: Esug-list <esug-list-bounces@lists.esug.org> On Behalf Of Christian Haider
Sent: zaterdag 28 maart 2020 13:43
To: vwnc@cs.uiuc.edu; esug-list@lists.esug.org; amber-lang@googlegroups.com
Subject: [Esug-list] destructDo:
 
Hi,
 
I am using a nice little method #destructDo: for a while now and it feels good.
In VisualWorks:
SequenceableCollection>>destructDo: aBlock
                                "Evaluate aBlock with the receiver's elements as parameters.
                                aBlock takes its arguments from the receiver.
                                'ok'
                                #(1 2 3) destructDo: [:a :b :c | a + b + c]
                                #(1 2 3) destructDo: [:a :b | a + b]
                                #(1 2 3) destructDo: [:a | a]
                                #(1 2 3) destructDo: [42]
                                'not ok'
                                #(1 2 3) destructDo: [:a :b :c :d | a + b + c + d]
                                "
                                ^aBlock cullWithArguments: self asArray
 
In Amber: 
SequenceableCollection>>destructDo: aBlock
                                ^aBlock valueWithPossibleArguments: self
 
In Pharo and other dialects, I don���t know, but should be as easy.
 
For example you can do
                (('2020-03-28' tokensBasedOn: $-) collect: #asNumber) destructDo: [:year :month :day |
                               Date newDay: day monthNumber: month year: year]
 
I like that the block is not the receiver (like with #valueWithArguments or #cullWithArguments), but the last argument.
 
Now the questions:
  • I am sure that others came up with this. Anybody knows?
  • What are you using for this pattern?
  • I don���t really like the name, but haven���t found anything better yet. Maybe #destructedDo: or just #destructed: or: #withPartsDo:��� maybe something shorter? Ideas?
  • What are you thinking about this?
 
Happy hacking,
                Christian
 
_______________________________________________
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