Because in GRT, you just change the data so they can be sorted lexicographically as strings, while in Schwartzian transform, you create a structure. You can simplify both to map {} sort {} map {} list (in GRT, sort block can be omitted), their difference can be seen only if you give more details.
| [reply] [Watch: Dir/Any] |
Agreed, but: 1. the OP did not ask for the difference between Guttman-Rosler and Schwartzian transforms, but only if MJD's code he had was a canonical ST. And this example is a canonical ST, which it what I said. The fact that I somewhat summarized for brevity (and because it could be other code for a different probklem and still be a ST) does not invalidate my point and certainly does not make the OP's initial code nor the summary that I made a GR transform. As you said, a GR transform would have omitted the sort block. I reallyt think that the OP question was whether the standard ST consists of the map-sort-map construct.
| [reply] [Watch: Dir/Any] |
Agreed ... OPs question
Yes, the original is canonical ST, there is no disputing that (you answered correctly)
But your shortening (somewhat summarized for brevity ) to @out = map {} sort {} map {} @in is definitely not the canonical Schwartzian Transform
because the essence of ST is not the pipeline, pipeline is regular usage of map/grep, its even present in GRT.
The essence of ST, the trick of it, the rule of it , [ is the caching ] .
If you replace the essence with {BLOCK} its unrecognizable, might as well call it transform / sort / transform -- nothing Schwartzian about it :) and not very descriptive, unlike decorate-sort-undecorate which describes both ST and GRT
| [reply] [Watch: Dir/Any] [d/l] [select] |