News for hackers. Stuff that matters.
Re:My Weird Ruby by grandalf on Friday March 06, 2015 @09:04PM (#9160667)
You can always freeze your hashes in Ruby for safety if you want to. All that's missing is some sugar for declaring immutable hash literals. I guess one way would be to allow clojure-style minimal punctuation map literals and make them immutable...
Re:My Weird Ruby by rubyn00bie on Saturday March 07, 2015 @06:19AM (#9161594)
You can't. Freezing a hash does not make it immutable. Try it.

It requires a good knowledge and dedication to consistently return a new object (not mutate state). Further, chaining is problematic for tracing errors because so much happens on a single line. Ruby has many subtle features that can bite you in the ass.

Don't get me wrong, I LOVE RUBY, I would love these paradigms to be better suited (rbx/jruby come close). I just find if I embrace mutability, state, and OO principles in Ruby I am rewarded in quality by having other smart people who are more easily able to critique my code and better it.

The abstraction I (completely willing to admit being wrong/stupid) don't believe is worth it. I think less effort and more reward can be had using the right tool for that job. I, for what it is worth, came to my conclusion through the pain of trying.

Re:My Weird Ruby by grandalf on Saturday March 07, 2015 @09:15AM (#9161844)
When I try to modify a frozen hash it raises an exception "Can't modify a frozen hash" in ruby 2.2.

I generally agree with the rest of your comment though, however I think some ruby code (per the original post) can be improved by introducing some of these paradigms.

Re:My Weird Ruby by jarkko on Friday March 13, 2015 @11:57AM (#9197813)
Yes, but you only freeze the hash, not the items it contains. It is also an issue for thread safety, as I wrote here: https://bearmetal.eu/theden/how-do-i-know-whether-my-rails-a...
Re:My Weird Ruby by masklinn on Saturday March 07, 2015 @05:20AM (#9161513)
> ou can always freeze your hashes in Ruby for safety if you want to. All that's missing is some sugar for declaring immutable hash literals.

And immutable structures with efficient "updates". Because otherwise every time you're altering the structure you have to copy it in full (though shallowly) then mutate it in place.

Re:My Weird Ruby by grandalf on Saturday March 07, 2015 @09:16AM (#9161846)
Re:My Weird Ruby by kyllo on Saturday March 07, 2015 @01:30PM (#9162571)
To go along with that--methods that have immutable/pure functional semantics, meaning they return a modified copy of the structure, with no side-effects, rather than mutating a shared object.