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:
Happy hacking,
Christian
I think the name destructDo: comes from destructuring assignment.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignmentNorbertAm 28.03.2020 um 14:15 schrieb Mark Plas <mark...@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
<logomgxnew_3d44337b-2535-4d6a-9f5f-3fdd565513ca.png> Nieuwe Gentsesteenweg 21/1 <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.
______________________________________________________________________________________________
Esug-list mailing list
Esug...@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
Esug-list mailing list
Esug...@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
I chose the name because of the old Lisp “destructuring-bind”. But this is more powerful, because it does tree matching. This is just shallow.
I am not sure where the concept was invented first. It may have been Lisp.
Von: Norbert Hartl <nor...@hartl.name>
Gesendet: Samstag, 28. März 2020 14:20
An: Mark Plas <mark...@mediagenix.tv>
Cc: Christian Haider <christia...@smalltalked-visuals.com>; vw...@cs.uiuc.edu; esug...@lists.esug.org; amber...@googlegroups.com
Betreff: Re: [Esug-list] destructDo:
I think the name destructDo: comes from destructuring assignment.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Norbert
Am 28.03.2020 um 14:15 schrieb Mark Plas <mark...@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
<logomgxnew_3d44337b-2535-4d6a-9f5f-3fdd565513ca.png>
<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
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-lis...@lists.esug.org> On Behalf Of Christian Haider
Sent: zaterdag 28 maart 2020 13:43
To: vw...@cs.uiuc.edu; esug...@lists.esug.org; amber...@googlegroups.com
Subject: [Esug-list] destructDo:
Hi,
_______________________________________________
Esug-list mailing list
Esug...@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
--
You received this message because you are subscribed to the Google Groups "amber-lang" group.
To unsubscribe from this group and stop receiving emails from it, send an email to amber-lang+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/amber-lang/947D670F-0596-47FD-8BF0-49539986667B%40nordakademie.de.