4 ms·
What language are you referring to? I'm not quite sure I understand your examples. -------- Related: In Haskell, any 2-argument function can be used (or def
by jewbacca 14y ago
What language are you referring to? I'm not quite sure I understand your examples.
--------
Related:
In Haskell, any 2-argument function can be used (or defined) infix by surrounding it with backticks, eg:
add 2 3
is equivalent to:
2 `add` 3
----
And you can use this to cleanly write curried functions (often predicates) with their arguments flipped, eg:
vowelCount = length . filter (`elem` "aeiou")
----
Note that functions named with punctuation characters are infix by default, and one can be used/defined prefix by surrounding it with brackets, eg:
(<$>) = fmap
toUpper <$> "aeiou" # => "AEIOU"
----
It's also convenient for resolving a subset of one of the harder problems in computer science: naming things. For a 2-argument function, use it infix and read it as a phrase in english. Which is clearer:
".jpg" `isSuffix` url
or:
".jpg" `isSuffixOf` url
You can also define functions' precedence and associativity (left/right) when used as an infix operator.
- vorg 14y ago> And you can use this to cleanly write curried functions (often predicates) with their arguments flipped But unicode in code is terser. Instead of `elem`, we could use ∈ [U+2208]. To flip parameters, we could use the bidi-mirrored glyph, i.e. ∋ [U+220B, the bidi-mirror of U+2208]. In fact we could even make it a feature of the language grammar to automatically detect whether a mirrored glyph is being used, and perform the transformation. We could even automatically detect and transform canonically equivalent graphemes using the non-spacing version of `not`, e.g. ∉ [U+2209, canonically equivalent to U+2208,U+0338], and ∌ [U+220C, mirror of U+2209 and equiv to U+220B,U+0338].