4 ms·
Whenever I introduce people to functional programming, I always list the standard benefits you'll hear and then put emphasis on powerful abstraction being the
by Homunculiheaded 16y ago
Whenever I introduce people to functional programming, I always list the standard benefits you'll hear and then put emphasis on powerful abstraction being the most important feature that makes fp worth learning.
Common Lisp is great because it realizes that abstraction and expressiveness are what make fp powerful, and is smart enough to know when to drop 'purity' in favor of these.
After spending a lot of time with Haskell and Scheme, Common Lisp feels very non-functional, however I still feel it is the best language for expressiveness and abstraction. Work with Scheme and Haskell enough and you'll find yourself writing some convoluted things to maintain purity. The problem with purity is that while it makes somethings much easier to express, there are times when you have to stop and ask "how do I express this", I find common lisp always gives you some way to express anything, but leaves you asking "how can I express this better?"
- kunjaan 16y ago>Work with Scheme and Haskell enough and you'll find yourself writing some convoluted things to maintain purity. I don't think you can lump all the Scheme languages into one umbrella and more importantly lump Scheme and Haskell in that context. For example, Racket has really good constructs that lets me "drop 'purity'", control side-effects, build sequences, control the flow, build classes, manage complexity while at the same time giving me the power to build higher levels of abstractions, express my thoughts and reason with my program. Reference: 0. Racket Guide: http://docs.racket-lang.org/guide/index.html http://docs.racket-lang.org/guide/index.html 1. System Programming with Racket : http://docs.racket-lang.org/more/ http://docs.racket-lang.org/more/
- anon_d 16y agoRacket is not a scheme.
- kunjaan 16y agoRacket is a Scheme "Racket is still a dialect of Lisp and a descendant of Scheme. The tools developed by PLT will continue to support R5RS, R6RS, the old mzscheme environment, Typed Scheme, and more. At the same time, instead of having to say “PLT's main variant of Scheme,” programmers can now simply say “Racket” to refer to the specific descendant of Scheme that powers PLT's languages and libraries." Reference : http://racket-lang.org/new-name.html http://racket-lang.org/new-name.html