I agree that the expression is unreadable. What I would initially do is to extract it into temporary variables. Like:
tree := json at: 'tree'. blobs := tree select: [ :each | (each at: 'type') = 'blob' ]. paths := blobs collect: [ :each | Path from: (each at: 'path')]). ... After you can see if you can extract the logic into different classes or other methods. Sebastian > De: "Richard Sargent" <richard.sarg...@gemtalksystems.com> > À: "pharo-users" <pharo-users@lists.pharo.org> > Envoyé: Mercredi 26 Janvier 2022 09:55:30 > Objet: [Pharo-users] Re: Too many parenthesis - a matter of syntax > On Wed, Jan 26, 2022, 01:20 Kasper Osterbye < [ > mailto:kasper.oster...@gmail.com > | 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