Functional programming has been around for decades. Functional programming offers the ability to represent not only nouns but also verbs, giving us a better ability to handle complex tasks in an easier fashion and in a modular way. Functional programming also embraces immutability and keeps programmers from race conditions and locking madness. In this 3-hour compare-and-contrast tutorial, Daniel Hinojosa gives a small guided tour of three popular functional languages: Haskell, Scala, and Clojure.
Haskell is a pure functional language with no side effects. It isn’t object oriented and any so-called structure mechanics are implemented as a function. Scala is a multiparadigm language in that it is both functional and object oriented. Scala runs on the Java Virtual Machine (JVM) and takes inspiration from Haskell, Java, and Erlang. Clojure is a Lisp that also runs on the JVM. In contrast to Haskell and Scala, Clojure is dynamically typed and is built on the notion of simplicity—most operations are done with lists, vectors, sets, and maps. Clojure is considered purely functional; as in Haskell, there are no objects up front when dealing with the language. Daniel analyzes each of the common features of the languages in turn and discusses some of the other languages that take their inspiration from these three functional languages.
Daniel Hinojosa has been a self-employed developer, teacher, and speaker for private business, education, and government since 1999. Daniel also currently teaches programming at the University of New Mexico Continuing Education. His business revolves around the Java ecosystem, encompassing multiple languages and frameworks. Daniel is a Pomodoro Technique practitioner and is cofounder of the Albuquerque Java User’s Group in New Mexico.
Comments on this page are now closed.
©2016, O'Reilly Media, Inc. • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • firstname.lastname@example.org