Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

My best guess would be that we use * for multiplication because x being alphanumeric is a valid variable name.

regarding keyboard presence, this is one of the things that irks me about Mac keyboards is the absence of the # character. I write little programs and scripts on my mac infrequently enough that I have to look up how to type it every blasted time. That, and how to take screenshots. The "Print Scrn" key on PCs spoils me.



    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]


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.


> 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].


Some apple keyboards have # printed, I'm surprised they don't all have it.


I'm going to assume he has the British keyboard which has a pound symbol rather than the hash (or... pound...) symbol.

http://parkernet.com/applepro/images/wireless-british.jpg


Spot on. It never occurred to me this was essentially a localisation issue. Blasted annoying one though.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: