Smalltalk doesn’t have a convention for methods returning multiple values, and I’m not aware of any implementation.<div dir="auto">An example of such thing is the extended gcd: ‘a xgcd: b’ returns g, s, t where g is the gcd, and as + bt = g. Writing methods that return multiple values is easy with the curly brackets syntax, Integer>>#xgcd: ends with something like</div><div dir="auto">    ^ {g. s. t}</div><div dir="auto">But using sending messages that return multiple values is kind of annoying, I end up doing something like:</div><div dir="auto">    xgcd := a xgcd: b.</div><div dir="auto">    g := xgcd at: 1.</div><div dir="auto">    s := xgcd at: 2.</div><div dir="auto">    t := xgcd at: 3</div><div dir="auto">Some years ago I thought about using blocks for this, but I never tried it. Today I just did a little experiment implementing anArray | aBlock as ‘^ aBlock valueWithPossibleArgs: self’ and I can do:</div><div dir="auto">    (a xgcd: b) | [:g :s :t| … ]</div><div dir="auto"><br></div><div dir="auto">This is seems quite nice already, I guess I’ll start using it and see how it feels. But the point of this mail is not to show a solution, but to ask if anyone have thought about this or if they know any nicer solutions. Any ideas?</div>