On Wed, Jan 26, 2022, 01:20 Kasper Osterbye <kasper.osterbye@gmail.com> wrote:
Cheers all

I have noticed that I often ends up with quite a number of nested expressions, for example:

(((json at: 'tree')
�� �� �� �� select: [ :e | (e at: 'type') = ���blob' ])
�� �� �� �� �� �� �� �� collect: [:e | Path from: (e at: 'path')])
�� �� �� �� �� �� �� �� �� �� �� �� select: [ :p | p segments last
�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� in: [ :name | (name endsWith: '.md') | (name endsWith: '.mic') ] ]

What kind of proposals (if any) have been for a different syntax which could give a more streamlined syntax?

What's written is basically unreadable and syntax changes won't help.

Try taking out the constants and describing their relationship with a new message or a couple of messages.

Without trying to understand it, it looks like you have some navigation followed by some filtering / suffix selection.

Try to develop an expression that articulates the meaning of what you're doing.


My own thinking has been around an alternative to the cascade semicolon. What symbol to use does not matter for me, but something like
json at: ���tree' ��
�� �� �� �� select: [ :e | ((e at: 'type') = 'blob���)]��
�� �� �� �� collect: [:e | Path from: (e at: 'path���)]��
�� �� �� �� select: [ :p | p segments last
�� �� �� �� �� �� �� �� in: [ :name | (name endsWith: '.md') | (name endsWith: '.mic') ] ]

Basically, a send the right hand expression to the result of the left hand expression.

Has anyone ever tried this, or is it just one of the many small annoyances best left alone?

Best,

Kasper