Hi All,
I juts had occasion to use generators in anger for the first time. I was trying to fnd out why a clone of a prse tree was reporting that it was not the same tree. Generators made enumerating all nodes in each tree together trivial:
| them | them := Generator on: [:g| newTree nodesDo: [:n| g yield: n]]. parseTree nodesDo: [:n| | twin | twin := them next. (n isSameAs: twin) ifFalse: [self halt]]
My message though comes from noticing that generators yield their values via next, so why not use nextPut: instead of yield: ?
e.g. I think this is better:
| them | them := Generator on: [:g| newTree nodesDo: [:n| g nextPut: n]]. parseTree nodesDo: [:n| | twin | twin := them next. (n isSameAs: twin) ifFalse: [self halt]]
_,,,^..^,,,_ best, Eliot
+1 nice!
Le mar. 23 juin 2020 à 20:23, Eliot Miranda eliot.miranda@gmail.com a écrit :
Hi All,
I juts had occasion to use generators in anger for the first time. I
was trying to fnd out why a clone of a prse tree was reporting that it was not the same tree. Generators made enumerating all nodes in each tree together trivial:
| them | them := Generator on: [:g| newTree nodesDo: [:n| g yield: n]]. parseTree nodesDo: [:n| | twin | twin := them next. (n isSameAs: twin) ifFalse: [self halt]]
My message though comes from noticing that generators yield their values via next, so why not use nextPut: instead of yield: ?
e.g. I think this is better:
| them | them := Generator on: [:g| newTree nodesDo: [:n| g nextPut: n]]. parseTree nodesDo: [:n| | twin | twin := them next. (n isSameAs: twin) ifFalse: [self halt]]
_,,,^..^,,,_ best, Eliot
On 23.06.2020, at 20:28, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
+1 nice!
yeah, nice addition! I'd suggest to keep #yield: around, tho. I think it is kind-of tied to the Generator idea (viz. Python, JavaScript, C#)..
Best regards -Tobias
Le mar. 23 juin 2020 à 20:23, Eliot Miranda eliot.miranda@gmail.com a écrit : Hi All,
I juts had occasion to use generators in anger for the first time. I was trying to fnd out why a clone of a prse tree was reporting that it was not the same tree. Generators made enumerating all nodes in each tree together trivial:
| them | them := Generator on: [:g| newTree nodesDo: [:n| g yield: n]]. parseTree nodesDo: [:n| | twin | twin := them next. (n isSameAs: twin) ifFalse: [self halt]]
My message though comes from noticing that generators yield their values via next, so why not use nextPut: instead of yield: ?
e.g. I think this is better:
| them | them := Generator on: [:g| newTree nodesDo: [:n| g nextPut: n]]. parseTree nodesDo: [:n| | twin | twin := them next. (n isSameAs: twin) ifFalse: [self halt]]
_,,,^..^,,,_ best, Eliot
please don't send me more letters !!!
On 2020-06-23, at 23:39, Tobias Pape Das.Linux@gmx.de wrote:
On 23.06.2020, at 20:28, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
+1 nice!
yeah, nice addition! I'd suggest to keep #yield: around, tho. I think it is kind-of tied to the Generator idea (viz. Python, JavaScript, C#)..
Best regards -Tobias
Le mar. 23 juin 2020 à 20:23, Eliot Miranda eliot.miranda@gmail.com a écrit : Hi All,
I juts had occasion to use generators in anger for the first time. I was trying to fnd out why a clone of a prse tree was reporting that it was not the same tree. Generators made enumerating all nodes in each tree together trivial:
| them | them := Generator on: [:g| newTree nodesDo: [:n| g yield: n]]. parseTree nodesDo: [:n| | twin | twin := them next. (n isSameAs: twin) ifFalse: [self halt]]
My message though comes from noticing that generators yield their values via next, so why not use nextPut: instead of yield: ?
e.g. I think this is better:
| them | them := Generator on: [:g| newTree nodesDo: [:n| g nextPut: n]]. parseTree nodesDo: [:n| | twin | twin := them next. (n isSameAs: twin) ifFalse: [self halt]]
_,,,^..^,,,_ best, Eliot
squeak-dev@lists.squeakfoundation.org