Esug-list
By thread
esug-list@lists.esug.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
March 2020
- 27 participants
- 51 messages
Re: [Esug-list] destructDo:
by Martin McClure
Hi Christian and all,
#destructDo: is probably not the best name. "Destruct" can be
interpreted as either short for "destructured" (which is what you want)
or more like "destroy" as in "self-destruct." I initially took
"destruct" in the "destroy" sense and guessed that #destructDo: might
remove each element from the collection as it iterated. You could
lengthen it to #destructured: or #destructuredDo:, but if there's a good
short name that would be better.
#tupleDo: feels better.
But both #tupleDo: and #destructDo: contain "do" which implies
iteration. Unless I'm missing something, your #destructDo: does not
iterate. I'd really expect a #tupleDo: to iterate -- I'd expect with
#(1 2 3 4) tupleDo: [:a :b: | a + b]
that the block would be evaluated twice, once with 1 and 2 and once with
3 and 4. This would be a nice pattern; you could also have a
tupleCollect: a tupleDetect: and so on.
#mapTo: is quite similar to #map: in PetitParser, except IIRC
PetitParser's #map: expects an exact match in argument count. But maybe
#map: is a good name for consistency.
Hope this helps.
Regards,
-Martin
On 3/28/20 7:24 AM, Christian Haider wrote:
>
> Yes, that would be nice. Unfortunately a bit more involved than this
> 1-liner…
>
> *Von:*Esug-list <esug-list-bounces(a)lists.esug.org> *Im Auftrag von
> *Christophe Dony
> *Gesendet:* Samstag, 28. März 2020 15:17
> *An:* esug-list(a)lists.esug.org
> *Betreff:* Re: [Esug-list] destructDo:
>
> Hi.
> I like tupleDo:
>
> or matchDo:
>
> and what about installing a full pattern matching, as in many
> languages e.g. Scheme : https://docs.racket-lang.org/reference/match.html
>
> #(1 #(2 3 6 7) 4) matchDo: [:a (:b :@c) :d] | …]
> here c would be #(3 6 7)
>
> may be it already exist?
> if not, would really be a +
>
> Christophe
>
>
>
> Le 28/03/2020 à 14:15, Mark Plas a écrit :
>
> 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(a)mediagenix.tv <mailto:mark.plas@mediagenix.tv>
>
>
>
> Nieuwe Gentsesteenweg 21/1
> <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
>
>
>
> 1702 Groot-Bijgaarden - Belgium
> <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
>
>
>
> <https://nl.linkedin.com/company/mediagenix-ng>
> <https://twitter.com/mediagenix_tv><https://www.facebook.com/MEDIAGENIX/>www.mediagenix.tv
> <http://www.mediagenix.tv>
>
>
>
> Directions to MEDIAGENIX
> <http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf>
>
>
>
> /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(a)lists.esug.org>
> <mailto:esug-list-bounces@lists.esug.org> *On Behalf Of *Christian
> Haider
> *Sent:* zaterdag 28 maart 2020 13:43
> *To:* vwnc(a)cs.uiuc.edu <mailto:vwnc@cs.uiuc.edu>;
> esug-list(a)lists.esug.org <mailto:esug-list@lists.esug.org>;
> amber-lang(a)googlegroups.com <mailto: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(a)lists.esug.org <mailto:Esug-list@lists.esug.org>
>
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
>
>
> _______________________________________________
> Esug-list mailing list
> Esug-list(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
March 28, 2020
Re: [Esug-list] destructDo:
by Christian Haider
Yes, that would be nice. Unfortunately a bit more involved than this
1-liner
Von: Esug-list <esug-list-bounces(a)lists.esug.org> Im Auftrag von Christophe
Dony
Gesendet: Samstag, 28. März 2020 15:17
An: esug-list(a)lists.esug.org
Betreff: Re: [Esug-list] destructDo:
Hi.
I like tupleDo:
or matchDo:
and what about installing a full pattern matching, as in many languages e.g.
Scheme : https://docs.racket-lang.org/reference/match.html
#(1 #(2 3 6 7) 4) matchDo: [:a (:b :@c) :d] |
]
here c would be #(3 6 7)
may be it already exist?
if not, would really be a +
Christophe
Le 28/03/2020 à 14:15, Mark Plas a écrit :
Hello Christian,
" I dont 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(a)mediagenix.tv <mailto:mark.plas@mediagenix.tv>
<https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
Nieuwe Gentsesteenweg 21/1
<https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
1702 Groot-Bijgaarden - Belgium
<https://nl.linkedin.com/company/mediagenix-ng>
<https://twitter.com/mediagenix_tv> <https://www.facebook.com/MEDIAGENIX/>
<http://www.mediagenix.tv> www.mediagenix.tv
<http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf>
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 <mailto:esug-list-bounces@lists.esug.org>
<esug-list-bounces(a)lists.esug.org> On Behalf Of Christian Haider
Sent: zaterdag 28 maart 2020 13:43
To: vwnc(a)cs.uiuc.edu <mailto:vwnc@cs.uiuc.edu> ; esug-list(a)lists.esug.org
<mailto:esug-list@lists.esug.org> ; amber-lang(a)googlegroups.com
<mailto: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 dont 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 dont really like the name, but havent 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(a)lists.esug.org <mailto:Esug-list@lists.esug.org>
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
March 28, 2020
Re: [Esug-list] destructDo:
by Christian Haider
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 <norbert(a)hartl.name>
Gesendet: Samstag, 28. März 2020 14:20
An: Mark Plas <mark.plas(a)mediagenix.tv>
Cc: Christian Haider <christian.haider(a)smalltalked-visuals.com>; vwnc(a)cs.uiuc.edu; esug-list(a)lists.esug.org; amber-lang(a)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…
Norbert
Am 28.03.2020 um 14:15 schrieb Mark Plas <mark.plas(a)mediagenix.tv <mailto: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
<mailto:mark.plas@mediagenix.tv> mark.plas(a)mediagenix.tv
<logomgxnew_3d44337b-2535-4d6a-9f5f-3fdd565513ca.png>
<https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429> Nieuwe Gentsesteenweg 21/1
<https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429> 1702 Groot-Bijgaarden - Belgium
<https://nl.linkedin.com/company/mediagenix-ng> <linkedin_75b9c4f1-6a2b-497c-aab8-df56fe16b8e3.png> <https://twitter.com/mediagenix_tv> <twitter_de4c3300-c6ab-4898-a962-b33ff662a322.png> <https://www.facebook.com/MEDIAGENIX/> <Facebook-icon_6bef7545-f54e-4548-bfc4-1f07407f2642.png> <http://www.mediagenix.tv/> www.mediagenix.tv
<http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf> 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 < <mailto:esug-list-bounces@lists.esug.org> esug-list-bounces(a)lists.esug.org> On Behalf Of Christian Haider
Sent: zaterdag 28 maart 2020 13:43
To: <mailto:vwnc@cs.uiuc.edu> vwnc(a)cs.uiuc.edu; <mailto:esug-list@lists.esug.org> esug-list(a)lists.esug.org; <mailto:amber-lang@googlegroups.com> amber-lang(a)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
<mailto:Esug-list@lists.esug.org> Esug-list(a)lists.esug.org
<http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
March 28, 2020
Re: [Esug-list] destructDo:
by Christophe Dony
Hi.
I like tupleDo:
or matchDo:
and what about installing a full pattern matching, as in many languages
e.g. Scheme : https://docs.racket-lang.org/reference/match.html
#(1 #(2 3 6 7) 4) matchDo: [:a (:b :@c) :d] | …]
here c would be #(3 6 7)
may be it already exist?
if not, would really be a +
Christophe
Le 28/03/2020 à 14:15, Mark Plas a écrit :
>
> 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(a)mediagenix.tv
>
>
>
> Nieuwe Gentsesteenweg 21/1
> <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
>
> 1702 Groot-Bijgaarden - Belgium
> <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
>
> <https://nl.linkedin.com/company/mediagenix-ng>
> <https://twitter.com/mediagenix_tv><https://www.facebook.com/MEDIAGENIX/>www.mediagenix.tv
> <http://www.mediagenix.tv>
>
> Directions to MEDIAGENIX
> <http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf>
>
> /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(a)lists.esug.org> *On Behalf Of
> *Christian Haider
> *Sent:* zaterdag 28 maart 2020 13:43
> *To:* vwnc(a)cs.uiuc.edu; esug-list(a)lists.esug.org;
> amber-lang(a)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(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
March 28, 2020
Re: [Esug-list] [vwnc] destructDo:
by Karsten Kusche
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(a)corriga.net<mailto:giovanni@corriga.net>) schrieb:
How about #consume: ?
Il giorno sab 28 mar 2020 alle ore 13:20 Norbert Hartl <norbert(a)hartl.name<mailto:norbert@hartl.name>> ha scritto:
I think the name destructDo: comes from destructuring assignment.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators…
Norbert
Am 28.03.2020 um 14:15 schrieb Mark Plas <mark.plas(a)mediagenix.tv<mailto: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(a)mediagenix.tv<mailto:mark.plas@mediagenix.tv>
<logomgxnew_3d44337b-2535-4d6a-9f5f-3fdd565513ca.png>
<http://www.mediagenix.tv/en/cabsat2018/>
Nieuwe Gentsesteenweg 21/1<https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
1702 Groot-Bijgaarden - Belgium<https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
<https://nl.linkedin.com/company/mediagenix-ng><https://nl.linkedin.com/company/mediagenix-ng> <linkedin_75b9c4f1-6a2b-497c-aab8-df56fe16b8e3.png><https://nl.linkedin.com/company/mediagenix-ng> <twitter_de4c3300-c6ab-4898-a962-b33ff662a322.png><https://twitter.com/mediagenix_tv><https://twitter.com/mediagenix_tv><https://twitter.com/mediagenix_tv><https://www.facebook.com/MEDIAGENIX/><Facebook-icon_6bef7545-f54e-4548-bfc4-1f07407f2642.png><https://www.facebook.com/MEDIAGENIX/>www.mediagenix.tv<http://www.mediagenix.tv/>
Directions to MEDIAGENIX<http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf>
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(a)lists.esug.org<mailto:esug-list-bounces@lists.esug.org>> On Behalf Of Christian Haider
Sent: zaterdag 28 maart 2020 13:43
To: vwnc(a)cs.uiuc.edu<mailto:vwnc@cs.uiuc.edu>; esug-list(a)lists.esug.org<mailto:esug-list@lists.esug.org>; amber-lang(a)googlegroups.com<mailto: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(a)lists.esug.org<mailto:Esug-list@lists.esug.org>
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
_______________________________________________
Esug-list mailing list
Esug-list(a)lists.esug.org<mailto:Esug-list@lists.esug.org>
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
March 28, 2020
Re: [Esug-list] destructDo:
by Graham McLeod
How about: #mapTo:
Graham
> Giovanni Corriga <mailto:giovanni@corriga.net>
> 28 March 2020 at 15:35
> How about #consume: ?
>
>
>
> _______________________________________________
> Esug-list mailing list
> Esug-list(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
> Norbert Hartl <mailto:norbert@hartl.name>
> 28 March 2020 at 15:19
> I think the name destructDo: comes from destructuring assignment.
>
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators…
>
> Norbert
>
>
>
>
> _______________________________________________
> Esug-list mailing list
> Esug-list(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
> Mark Plas <mailto:mark.plas@mediagenix.tv>
> 28 March 2020 at 15:15
>
> 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(a)mediagenix.tv
>
>
>
> Nieuwe Gentsesteenweg 21/1
> <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
>
> 1702 Groot-Bijgaarden - Belgium
> <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
>
> <https://nl.linkedin.com/company/mediagenix-ng>
> <https://twitter.com/mediagenix_tv><https://www.facebook.com/MEDIAGENIX/>www.mediagenix.tv
> <http://www.mediagenix.tv>
>
> Directions to MEDIAGENIX
> <http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf>
>
> /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(a)lists.esug.org> *On Behalf Of
> *Christian Haider
> *Sent:* zaterdag 28 maart 2020 13:43
> *To:* vwnc(a)cs.uiuc.edu; esug-list(a)lists.esug.org;
> amber-lang(a)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(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
> Christian Haider <mailto:christian.haider@smalltalked-visuals.com>
> 28 March 2020 at 14:42
>
> 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(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
March 28, 2020
Re: [Esug-list] destructDo:
by Giovanni Corriga
How about #consume: ?
Il giorno sab 28 mar 2020 alle ore 13:20 Norbert Hartl <norbert(a)hartl.name>
ha scritto:
> I think the name destructDo: comes from destructuring assignment.
>
>
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators…
>
> Norbert
>
> Am 28.03.2020 um 14:15 schrieb Mark Plas <mark.plas(a)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(a)mediagenix.tv
>
>
> <logomgxnew_3d44337b-2535-4d6a-9f5f-3fdd565513ca.png>
>
> <http://www.mediagenix.tv/en/cabsat2018/>
> Nieuwe Gentsesteenweg 21/1
> <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
>
> 1702 Groot-Bijgaarden - Belgium
> <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
>
> <https://nl.linkedin.com/company/mediagenix-ng>
> <https://nl.linkedin.com/company/mediagenix-ng>
> <linkedin_75b9c4f1-6a2b-497c-aab8-df56fe16b8e3.png>
> <https://nl.linkedin.com/company/mediagenix-ng>
> <twitter_de4c3300-c6ab-4898-a962-b33ff662a322.png>
> <https://twitter.com/mediagenix_tv> <https://twitter.com/mediagenix_tv>
> <https://twitter.com/mediagenix_tv> <https://www.facebook.com/MEDIAGENIX/>
> <Facebook-icon_6bef7545-f54e-4548-bfc4-1f07407f2642.png>
> <https://www.facebook.com/MEDIAGENIX/>www.mediagenix.tv
> Directions to MEDIAGENIX
> <http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf>
>
>
>
> *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(a)lists.esug.org> *On Behalf Of *Christian
> Haider
> *Sent:* zaterdag 28 maart 2020 13:43
> *To:* vwnc(a)cs.uiuc.edu; esug-list(a)lists.esug.org;
> amber-lang(a)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(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
>
>
> _______________________________________________
> Esug-list mailing list
> Esug-list(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
>
March 28, 2020
Re: [Esug-list] destructDo:
by Norbert Hartl
I think the name destructDo: comes from destructuring assignment.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators… <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators…>
Norbert
> Am 28.03.2020 um 14:15 schrieb Mark Plas <mark.plas(a)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(a)mediagenix.tv <mailto:mark.plas@mediagenix.tv>
>
>
> <logomgxnew_3d44337b-2535-4d6a-9f5f-3fdd565513ca.png>
> <http://www.mediagenix.tv/en/cabsat2018/>
>
> Nieuwe Gentsesteenweg 21/1 <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
> 1702 Groot-Bijgaarden - Belgium <https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
> <https://nl.linkedin.com/company/mediagenix-ng> <https://nl.linkedin.com/company/mediagenix-ng> <linkedin_75b9c4f1-6a2b-497c-aab8-df56fe16b8e3.png> <https://nl.linkedin.com/company/mediagenix-ng> <twitter_de4c3300-c6ab-4898-a962-b33ff662a322.png> <https://twitter.com/mediagenix_tv> <https://twitter.com/mediagenix_tv> <https://twitter.com/mediagenix_tv> <https://www.facebook.com/MEDIAGENIX/><Facebook-icon_6bef7545-f54e-4548-bfc4-1f07407f2642.png> <https://www.facebook.com/MEDIAGENIX/>www.mediagenix.tv <http://www.mediagenix.tv/>
> Directions to MEDIAGENIX <http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf>
>
>
> 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(a)lists.esug.org <mailto:esug-list-bounces@lists.esug.org>> On Behalf Of Christian Haider
> Sent: zaterdag 28 maart 2020 13:43
> To: vwnc(a)cs.uiuc.edu <mailto:vwnc@cs.uiuc.edu>; esug-list(a)lists.esug.org <mailto:esug-list@lists.esug.org>; amber-lang(a)googlegroups.com <mailto: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(a)lists.esug.org <mailto:Esug-list@lists.esug.org>
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org <http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org>
March 28, 2020
Re: [Esug-list] destructDo:
by Mark Plas
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(a)mediagenix.tv
[cid:logomgxnew_3d44337b-2535-4d6a-9f5f-3fdd565513ca.png]
<http://www.mediagenix.tv/en/cabsat2018/>
Nieuwe Gentsesteenweg 21/1<https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
1702 Groot-Bijgaarden - Belgium<https://www.google.com/maps/dir/?api=1&destination=50.872900,4.286429>
<https://nl.linkedin.com/company/mediagenix-ng><https://nl.linkedin.com/company/mediagenix-ng> [cid:linkedin_75b9c4f1-6a2b-497c-aab8-df56fe16b8e3.png] <https://nl.linkedin.com/company/mediagenix-ng> [cid:twitter_de4c3300-c6ab-4898-a962-b33ff662a322.png] <https://twitter.com/mediagenix_tv> <https://twitter.com/mediagenix_tv> <https://twitter.com/mediagenix_tv> <https://www.facebook.com/MEDIAGENIX/> [cid:Facebook-icon_6bef7545-f54e-4548-bfc4-1f07407f2642.png] <https://www.facebook.com/MEDIAGENIX/> www.mediagenix.tv<http://www.mediagenix.tv>
Directions to MEDIAGENIX<http://www.mediagenix.tv/wp-content/uploads/2017/08/Directions.pdf>
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(a)lists.esug.org> On Behalf Of Christian Haider
Sent: zaterdag 28 maart 2020 13:43
To: vwnc(a)cs.uiuc.edu; esug-list(a)lists.esug.org; amber-lang(a)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
March 28, 2020
Re: [Esug-list] destructDo:
by Norbert Hartl
Pressed send to fast. Just wanted to add that this is how it works in pharo but no collection selector.
Norbert
> Am 28.03.2020 um 14:06 schrieb Norbert Hartl <norbert(a)hartl.name>:
>
> [:year :month :day | Date newDay: day month: month year: year]
> valueWithPossibleArguments: (($- split: '2020-03-28') collect: #asNumber)
>
> Norbert
>
>> Am 28.03.2020 um 13:42 schrieb Christian Haider <Christian.Haider(a)smalltalked-visuals.com <mailto:Christian.Haider@smalltalked-visuals.com>>:
>>
>> 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(a)lists.esug.org <mailto:Esug-list@lists.esug.org>
>> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org <http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org>
> _______________________________________________
> Esug-list mailing list
> Esug-list(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
March 28, 2020