Jut a quick one, how do you translate this:
((if (zero? 0) + -) 3 4)
=> 7
to Ruby?
Cheers,
Douglas
Jut a quick one, how do you translate this:
((if (zero? 0) + -) 3 4)
=> 7
to Ruby?
Cheers,
Douglas
Douglas L. wrote:
Jut a quick one, how do you translate this:
((if (zero? 0) + -) 3 4)
=> 7to Ruby?
Cheers,
Douglas
3.send(x.zero? ? :+ : :-, 4)
It’s a little hard to read with all those colons. Maybe this is better:
3.send(if x.zero? then :+ else :- end, 4)
Or you could replace symbols with strings for readability, at a cost to
speed:
p 3.send(x.zero? ? “+” : “-”, 4)
Douglas L. wrote:
Jut a quick one, how do you translate this:
((if (zero? 0) + -) 3 4)
=> 7to Ruby?
Well, these kind of questions are rarely helpful; translating an
idiomatic expression out of context from one language is often useless,
because in a greater context the ruby code might be doing something
completely different to begin with.
But, if you want a one-liner…
3.method(0.zero? ? :+ : :-).call(4)
–
Neil S. - [email protected]
‘A republic, if you can keep it.’ – Benjamin Franklin
Douglas L. wrote:
Just a quick one, how do you translate this:
((if (zero? 0) + -) 3 4)
What dialect of LISP is that? Not Common… CL has no “zero?”
(it’s “zerop”), and + and - refer to input history rather than the
functions
associated with the operators. To do something like that in CL I think
you have to use the characters '+ and '- and an (eval)…
On Fri, Dec 16, 2005 at 07:22:39AM +0900, Mark J.Reed wrote:
Douglas L. wrote:
Just a quick one, how do you translate this:
((if (zero? 0) + -) 3 4)
What dialect of LISP is that? Not Common… CL has no “zero?”
It’s Scheme. A much nicer dialect than CL, IMHO.
I think in CL the equivalent would be:
((if (zerop 0) #’+ #’-) 3 4)
Note the ugly sharp-quotes, due to the fact that CL has separate
namespaces for values and functions.
regards,
Ed
Stephen W. wrote:
–Steve
7
On Dec 14, 2005, at 6:36 PM, Douglas L. wrote:
((if (zero? 0) + -) 3 4)
=> 7to Ruby?
7 if true
–Steve
Edward F. [email protected] writes:
I think in CL the equivalent would be:
((if (zerop 0) #‘+ #’-) 3 4)
No, you need:
(apply (if (zerop 0) #‘+ #’-) '(3 4))
Note the ugly sharp-quotes, due to the fact that CL has separate
namespaces for values and functions.
And that is why.
Joel VanderWerf [email protected] wrote:
7 if true
–Steve
7
There - who says ruby isn’t concise!
martin
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs