
What do you call this in Ruby? - juanfatas
https://github.com/JuanitoFatas/what-do-you-call-this-in-ruby
======
kbenson
Such little imagination... You should learn from your forefathers. Quantity is
no substitute for quality. ;)

[http://search.cpan.org/dist/perlsecret/lib/perlsecret.pod#SY...](http://search.cpan.org/dist/perlsecret/lib/perlsecret.pod#SYNOPSIS)

~~~
Bluestrike2
It would seem like the forefathers won this round. You've got to love the
inchworm on a stick.

------
brandonbloom
Meanwhile:

    
    
        Mathematica 10.0 for Mac OS X x86 (64-bit)
        Copyright 1988-2014 Wolfram Research, Inc.
    
        In[1]:= FullForm[x->y*z^w]
    
        Out[1]//FullForm= Rule[x, Times[y, Power[z, w]]]
    
        In[2]:= x\[UnionPlus]y\[RightTee]z
    
        Out[2]= x ⊎ y ⊢ z
    

There's no reason your programming language shouldn't be able to tell you what
these things are called in English without an external reference.

~~~
eru
Some operators are so abstract that they don't really have a good name.

Eg if you are talking about groups in general, how do you pronounce the group
operation ∘? At uni, we usually just called it Kringel.

~~~
brandonbloom
The name can be arbitrary, as long as it's unambiguous. By the way, here's
what mathematica says when I copy paste that and enter x∘y: SmallCircle[x,y]

Also fun:

    
    
        In[3]:= SpokenString[x\[SmallCircle]y]
        Out[3]= "SmallCircle of x and y"
    

Which can be turned in to sound:

    
    
        Speak[x\[SmallCircle]y]

~~~
eru
Actually, it's not even unambiguous. In some sense, it's like an unbounded
variable.

------
pak
Say what you will about us, but Ruby people get to have the most fun.

 _hops on hipster hashrocket and tribbles off into the sunset_

~~~
timdorr
> Pythonists are all "explicit is better than implicit" and Rubists are all
> like "LOOK AT ME I MADE A BONG OUT OF THIS HAIR DRYER"

[https://twitter.com/geeksam/status/618828713308753921](https://twitter.com/geeksam/status/618828713308753921)

~~~
zachrose
"AND CHECK OUT THIS COOL WAY TO TEST IT"

------
technion
I had a Microsoft support technician ask us to press the "flower button" in a
powershell script. It took a while to work out he meant { and }.

------
jowiar
This sums up what I dislike most about Scala (which is an even worse offender
in this regard). A rule of thumb: if a 10-year-old wouldn't be able to
intuitively read the operator, use words.

~~~
greydius
Written words are symbols as well. What should we do when we don't understand
words?

~~~
kibwen
We Google them, which is an impossible task for non-alphabetic symbols. :P

~~~
greydius
I wonder at what point people started to expect that search engines can
instantly provide all the answers to everything worth knowing. The correct
place to find a word you don't know is a dictionary. The correct place to find
a symbol in code that you don't know is the definition in the source code (or
language reference if it's baked in), or simply ask someone who knows.

~~~
kibwen
Asking someone you know is not an approach that scales in the large, and
suggesting that all answers can be divined from source both assumes a level of
mastery that cannot be expected (e.g. the difficulty of reading the source of
C++'s Boost library vs. reaching for the extensive documentation) and denies
the existence of questions such as "when is it appropriate to use this
operator?" or "what is the worst-case runtime complexity of this operation?"

------
zyxley
This seems like it could have been prime territory for a bit of
surrealist/meta fiction, with gradually stranger descriptions of operators
turning into a short story of some kind.

------
brightball
I will be using bacon cannon from here on out

------
teddyh
Normal single-character operators also have names:

[http://www.catb.org/jargon/html/A/ASCII.html](http://www.catb.org/jargon/html/A/ASCII.html)

------
biot
How did hashrocket get named? I would think instead of => a hashrocket would
look like: #>

edit: Makes total sense. Thanks for the replies.

~~~
arjie
Ruby's associative arrays are called hashes. That operator is how you assign a
value to a key.

------
broodbucket
Wish I worked with a language with a === operator so I could say "threequals".
Very clever and fitting.

~~~
BigJono
I've worked with Javascript for years and never thought of this. Such wasted
opportunity...

------
eru
A select few operators (out of hundreds) for a single Haskell library:
[https://github.com/ekmett/lens/wiki/Operators](https://github.com/ekmett/lens/wiki/Operators)

(For full disclosure, the lens library is infamous for this.)

~~~
kccqzy
You are perfectly fine importing the module Control.Lens.Combinators[0], which
has the full functionality of lens except the operators. There's nothing you
can do with operators but can't do with normal functions named with words.

[0]: [http://ekmett.github.io/lens/src/Control-Lens-
Combinators.ht...](http://ekmett.github.io/lens/src/Control-Lens-
Combinators.html)

~~~
eru
Oh, definitely. Haskell approach to operators and overloading is exactly the
Right Way: operators are weirdly syntaxed function, and you can add your own.
No need to make bit-shifting do IO.

------
jack9
... is an ellipsis.

! is enunciated as "bang" from BASH parlance, iirc.

~~~
juanfatas
thank you, added.

------
mokus
Looks like quite a few of these were cribbed from the intercal character
set[0]. Nice to see that living on.

[0] [http://www.muppetlabs.com/~breadbox/intercal-
man/tonsila.htm...](http://www.muppetlabs.com/~breadbox/intercal-
man/tonsila.html)

------
mifix
Just added a PR for the spermy operator (~>).

~~~
MichaelApproved
For those wondering, here's the request:
[https://github.com/JuanitoFatas/what-do-you-call-this-in-
rub...](https://github.com/JuanitoFatas/what-do-you-call-this-in-ruby/pull/4)

Here's the response: _Hi Christian, thanks for the Pull Request! But I think
this is not appropriate rubygems /rubygems#124. :bow:_

~~~
mifix
Can someone explain to me, why this is not appropriate?

~~~
MichaelApproved
Sperm comes from ejaculate. Ejaculation is a bodily function. Bodily function
is likely not going to be proper in a professional environment.

~~~
eridal
Really? What about sleep/wake?

~~~
MichaelApproved
Specifically, sex makes many people uncomfortable. Sure, it's natural function
but it's not a topic many people are comfortable talking about openly. Not me
but you can understand how this would be a sensitive enough topic for enough
people that they'd leave it out, no?

------
gregschlom
my favorite is the "Elvis operator" in kotlin ?:

Took me a while to figure out why it was called that way.

------
santaclaus
> =~

Cigarette operator! This list is on fire.

------
rosalinekarr
I like to call crab clows 'insert.'

~~~
juanfatas
I added, thank you.

------
cdcarter
'!!' -> "truthy?"

~~~
MichaelApproved
! -> "not truthy". So !! means "not 'not truthy'" which is truthy.

Truthy is something that isn't exactly a true boolean but will equate to
true(thy) when evaluated with this type of comparison. Things like undefined,
null, and empty string will not be truthy.

More info on what's truthy (for JavaScript at least) is here
[http://james.padolsey.com/javascript/truthy-
falsey/](http://james.padolsey.com/javascript/truthy-falsey/)

edit: typically, if you want to test for truthy, you'll just evaluate it like
so

if (my_object) { //truthy }else{ //not truthy }

Does anyone know a time when you'd use !! instead of just the object in the
evaluation? I'm not a Ruby dev, so I don't know specific cases for needing !!

~~~
Stratoscope
One typical use for !! in JavaScript or Ruby is where a function/method
returns a boolean value that indicates the presence or absence of an object.

You could just use:

    
    
      return myObject;
    

Since that value will be truthy or falsy, any code that tests it will
generally work, as your if statement example demonstrates.

But there are two advantages to doing this instead:

    
    
      return !! myObject;
    

1) Now you are returning an actual boolean value, not just a truthy/falsy
value.

2) Sometimes more importantly, you are now _releasing_ this function's
reference to the object, instead of possibly keeping that reference around
much longer than needed and preventing it from being garbage collected.

------
clairity
i like the yoda operator: !!!

i've never used it... what's a good use case?

------
dasil003
stabby lambda is my favorite.

~~~
ilikepi
I like the name "stabby lambda", but I dislike its use. It seems less readable
to me. The again I also think ruby 1.9 Hash syntax is less readable, so maybe
my judgement is suspect.

------
Skywing
dat bacon cannon

