Abstract
Hundreds of programming languages are available today and new ones are still emerging. Nevertheless, they are founded in several (old) paradigms. Knowing the essence of paradigms helps to orient oneself in this Babylon, which is challenging especially for the growing community of programmers with no computer science background. In this paper we focus on functional paradigm, which has a raising attention both in new languages (like Clojure and ClojureScript) and a growing support in traditional languages (like C++ and Java). We do not discuss why this happens here, but we focus on analysing fundamental concepts in the functional paradigm and functional programming languages. We describe them and divide them into two categories: key principles and additional principles. Next, we apply this conceptual framework to analyse the ES5 and ES6 versions of JavaScript. We conclude that ES6 is a good step towards functional principles support. Also, the presented conceptual framework may be used for similar analyses of other languages.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
A variable can be also declared without the var keyword, which makes the variable global.
References
List of programming languages, page Version ID: 750948731, November 2016. https://en.wikipedia.org/w/index.php?title=List_of_programming_languages&oldid=750948731
Kedar, S.: Programming Paradigms and Methodology. Technical Publications, google-Books-ID: gvm9TPE96t4C, January 2008
Clojure. http://clojure.org/
Warburton, R.: Java 8 Lambdas: Pragmatic Functional Programming. O’Reilly Media, Inc., google-Books-ID: qKUdAwAAQBAJ, March 2014
Computer Science. PediaPress, google-Books-ID: Yte2cXVES9EC
Cousineau, G., Mauny, M.: The Functional Approach to Programming. Cambridge University Press, Cambridge, google-Books-ID: vccmAAAAQBAJ, October 1998
Hughes, J.: Why functional programming matters. Comput. J. 32(2), 98–107 (1989)
Vander Hart, L., Sierra, S.: Practical Clojure, 1st edn. Apress, 232 pages, June 2010
Bird, R.: Thinking Functionally with Haskell. Cambridge University Press, Cambridge, google-Books-ID: B4RxBAAAQBAJ, October 2014
O’Sullivan, B., Goerzen, J., Stewart, D.B.: Real World Haskell: Code You Can Believe In. O’Reilly Media, Inc., google-Books-ID: nh0okI1a1sQC, November 2008
Jouannaud, J.-P.: Functional Programming Languages and Computer Architecture: Proceedings, Nancy, France, September 16–19. Springer, Heidelberg (1985)
Pickering, R., Eason, K.: Beginning F# 4.0. Apress, google-Books-ID: puQgDAAAQBAJ, May 2016
Koval, K.: Swift High Performance. Packt Publishing Ltd., VfioCwAAQBAJ google-Books-ID: VoCwAAQBAJ, November 2015
Ballou, K.: Learning Elixir. Packt Publishing Ltd., google-Books-ID:ogUcDAAAQBAJ, January 2016
Alexander, A.: Scala Cookbook: Recipes for Object-Oriented and Functional Programming. O’Reilly Media, Inc., google-Books-ID:BSo2AAAAQBAJ, August 2013
Borges, L.: Clojure Reactive Programming. Packt Publishing Ltd., google-Books-ID: 1tePBwAAQBAJ, March 2015
Geller, F., Hirschfeld, R., Bracha, G.: Pattern Matching for an Object-oriented and Dynamically Typed Programming Language. Universittsverlag Potsdam, google-Books-ID: 2gM_93yaz_kC (2010)
Hu, Z., Hughes, J., Wang, M.: How functional programming mattered. National Sci. Rev. 2(3), 349–370 (2015)
Luca Cardelli, P.W.: On Understanding Types, Data Abstraction, and Polymorphism, December 1985. http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf
Crockford, D.: JavaScript: The Good Parts: The Good Parts. O’Reilly Media, Inc., google-Books-ID: PXa2bby0oQ0C, May 2008
ECMAScript Language Specification, December 2009. http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262
ECMAScript 2016 Language Specification, June 2016. http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
ECMAScript 6 compatibility table, November 2016. http://kangax.github.io/compat-table/es6/
Lodash. https://lodash.com/
Underscore.js. http://underscorejs.org/
Immutable.js. https://facebook.github.io/immutable-js/
amdjs/amdjs-api. https://github.com/amdjs/amdjs-api
A Beginner’s Guide to Currying in Functional JavaScript, October 2015. https://www.sitepoint.com/currying-in-functional-javascript/
Ramda Documentation. http://ramdajs.com/
Daggett, M.E.: Expert JavaScript. Apress, google-Books-ID: HpoQAwAAQBAJ, November 2013
Prusty, N.: Learning ECMAScript 6. Packt Publishing Ltd., google-Books-ID: 9O13CgAAQBAJ, August 2015
ECMAScript 6: New Features: Overview and Comparison. http://es6-features.org/#Lexicalthis
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
Janeček, L., Pergl, R. (2017). Analysing Functional Paradigm Concepts. In: Rocha, Á., Correia, A., Adeli, H., Reis, L., Costanzo, S. (eds) Recent Advances in Information Systems and Technologies. WorldCIST 2017. Advances in Intelligent Systems and Computing, vol 569. Springer, Cham. https://doi.org/10.1007/978-3-319-56535-4_86
Download citation
DOI: https://doi.org/10.1007/978-3-319-56535-4_86
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-56534-7
Online ISBN: 978-3-319-56535-4
eBook Packages: EngineeringEngineering (R0)