3 ms·
X = Y x Z B = T ^ F v T P = Q n R u S C = U cross V D = U dot V Area = Width by Height i.e. just capitalising names means that you can
by Uncompetative 14y ago
X = Y x Z
B = T ^ F v T
P = Q n R u S
C = U cross V
D = U dot V
Area = Width by Height
i.e. just capitalising names means that you can define macros that operate as infix operators:
L . R -> L dot R
L dot R -> Dot[L, R]
- jewbacca 14y agoWhat 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].