Some languages deal with this better than others through structural sharing, which reduces overhead significantly. The performance hit is usually unnoticeable in those languages and only becomes a problem in very specific cases ie. processing large strings, appending items to long lists, etc... some of those will cause you to rethink the way you do certain things (that is part of the FP journey).
In languages like JS or Ruby though, you might need to compromise. Generally I start with the immutable approach and refactor if performance becomes an issue.
Immutability. I didn't really understand the benefits of having immutable data structures until I tried building a service with no mutations whatsoever... and noticed I didn't get any weird, head-scratching bugs that took hours to reproduce and debug. That led me to go down the Functional Programming rabbit hole - thus changing my entire view on what code is/could be.
I would normally agree, but Apple has a good track record of yanking out things that were considered crucial and turned out to be relics from the past in desperate need of innovation (or replacement). My optimistic prediction: the increased demand for wireless headphones will drive manufacturers to constantly improve their products and drop prices to remain competitive - two years from now, we won't even remember the day our phones had a headphone jack.
Do you recommend any framework for Haskell web development? I really liked toying around with the language, but I hit a brick wall when trying to build something "real" with it - it's hard to find decent guides that made the jump between the basics of writing functions, using recursion, etc and using the language on a full-on application.
Given I have been working with web development in Ruby and PHP for years, I would love to find a nice "getting started" guide for a good/well established Haskell framework.
Great news, good work guys. I've been following Padrino for a few months now and it's by far my favourite Ruby framework - I find it to provide a very elegant and powerful layer of functionality on top of Sinatra. I really hope it gets more recognition and a bigger/more active community as IMO that is the only area where Rails is unquestionably better. Congrats again on the new release - looking forward to 1.0!
In languages like JS or Ruby though, you might need to compromise. Generally I start with the immutable approach and refactor if performance becomes an issue.