interesting....

#isOdd is not Smalltalk, neither Pharo 10 nor VAST 12 understands this message ;-)

If I evaluate your snippet -replacing #isOdd for #odd, I get an empty Collection. The divisible by 4 things is somewhat interesting, because (1 to: 100 by: 4) is amn interval 1,5,9 etc.... ;-)

So chatGPT is probably a newbie in Smalltalk. Interesting is how logical the explanation sounds, you're tempted to believe it...


Joachim



Am 15.03.23 um 10:45 schrieb giorgio ferraris:
it's interesting to see how the answer changes with only a small change on the question:

(1 to: 100 by: 4) reject: [:i | i isOdd]

gives:

The code creates a collection of numbers from 1 to 100, incrementing by 4 at each step using the|to:by:|message. It then applies the|reject:|message to this collection, which returns a new collection containing all elements for which the given block evaluates to false.

In this case, the block is|[i | i isOdd]|, which checks whether a given number|i|is odd using the|isOdd|method. So the result of the entire expression is a collection of all even numbers between 1 and 100 that are divisible by 4.


ciao

giorgio


On Wed, Mar 15, 2023 at 8:07 AM Tim Mackinnon <tim@testit.works> wrote:

    Of course everyone is talking about ChatGPT, and I saw a post to
    ExplainCode and didn’t expect it to understand Smalltalk, so was
    impressed that it does! Presumably the Tonel Smalltalk code on
    GitHub has helped along with numerous articles?

    Try it out: https://whatdoesthiscodedo.com/

    I gave this simple example: (1 to: 100 by: 3) reject: [:i | i isOdd]

    And got this (neat eh):

    The code above is written in the programming language Smalltalk.

    It creates a collection of numbers from 1 to 100, incrementing by
    3 at each step. This is done using the "to:by:" construct where
    the starting value is 1, the ending value is 100, and the
    increment is 3.

    The resulting collection is then filtered using the "reject:"
    method, which takes a block of code as an argument. In this case,
    the block checks whether each element (denoted by the variable i)
    is odd by using the "isOdd" method. If an element is odd, it will
    be rejected from the collection.

    So, the final result is a collection of all even numbers from 1 to
    100, incrementing by 3 at each step.

    Share this explanation with colleagues:
    whatdoesthiscodedo.com/g/a0ec56e
    <https://whatdoesthiscodedo.com/g/a0ec56e>

--

-----------------------------------------------------------------------
Objektfabrik Joachim Tuchelmailto:jtuc...@objektfabrik.de Fliederweg 1http://www.objektfabrik.de
D-71640 Ludwigsburghttp://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0                    Fax: +49 7141 56 10 86 1

Reply via email to