Back

Luarrow – True pipeline operators and elegant Haskell-style function compositio

24 points2 monthsgithub.com
orthoxerox2 months ago

I love it when people push syntax to its limits. The only thing I do not like is how `^` points in the wrong direction when you stack it vertically, like in the example:

    local _ = 5
      % arrow(function(x) return -x end)
      ^ arrow(function(x) return x + 10 end)
      ^ arrow(function(x) return x * x end)
      ^ arrow(print)  -- 25
psychoslave2 months ago

Yeah but actually it’s really a keyword artefact in that case. It’s more surprising that with all the emphases in the doc about readability, it will stick to an identifier like "arrow", when "which", "that" or "through" would make it far approachable. At least I would guess so.

  -- what we don’t care to use later, we brush under the mat/rug [2,3]
  local mat = 5
      -- nub, as the essence or core of an issue, argument etc. [1]
      % through(function(nub) return -nub end)
      ^ through(function(nub) return nub + 10 end)
      ^ through(function(nub) return nub * nub end)
      ^ through(print)  -- 25


[1] https://en.wiktionary.org/wiki/nub

[2] https://dictionary.cambridge.org/dictionary/english/sweep-un...

[3] https://idioms.thefreedictionary.com/brush+(something)+under...

NuclearPM2 months ago

Lua really needs shorter function syntax for this type of thing to work.

My hobby compile to Lua language uses [ x | x + 1 ] and [ ] for a no-arg function/block.

wosined2 months ago

Just use Haskell. You can be among the first.