On Wed, Jan 26, 2022, 01:20 Kasper Osterbye <kasper.oster...@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

Reply via email to