Skip to main content

Analysing Functional Paradigm Concepts

The JavaScript Case

  • Conference paper
  • First Online:
  • 2607 Accesses

Part of the book series: Advances in Intelligent Systems and Computing ((AISC,volume 569))

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

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   169.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   219.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    A variable can be also declared without the var keyword, which makes the variable global.

References

  1. List of programming languages, page Version ID: 750948731, November 2016. https://en.wikipedia.org/w/index.php?title=List_of_programming_languages&oldid=750948731

  2. Kedar, S.: Programming Paradigms and Methodology. Technical Publications, google-Books-ID: gvm9TPE96t4C, January 2008

    Google Scholar 

  3. Clojure. http://clojure.org/

  4. Warburton, R.: Java 8 Lambdas: Pragmatic Functional Programming. O’Reilly Media, Inc., google-Books-ID: qKUdAwAAQBAJ, March 2014

    Google Scholar 

  5. Computer Science. PediaPress, google-Books-ID: Yte2cXVES9EC

    Google Scholar 

  6. Cousineau, G., Mauny, M.: The Functional Approach to Programming. Cambridge University Press, Cambridge, google-Books-ID: vccmAAAAQBAJ, October 1998

    Google Scholar 

  7. Hughes, J.: Why functional programming matters. Comput. J. 32(2), 98–107 (1989)

    Article  MathSciNet  Google Scholar 

  8. Vander Hart, L., Sierra, S.: Practical Clojure, 1st edn. Apress, 232 pages, June 2010

    Google Scholar 

  9. Bird, R.: Thinking Functionally with Haskell. Cambridge University Press, Cambridge, google-Books-ID: B4RxBAAAQBAJ, October 2014

    Google Scholar 

  10. 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

    Google Scholar 

  11. Jouannaud, J.-P.: Functional Programming Languages and Computer Architecture: Proceedings, Nancy, France, September 16–19. Springer, Heidelberg (1985)

    Google Scholar 

  12. Pickering, R., Eason, K.: Beginning F# 4.0. Apress, google-Books-ID: puQgDAAAQBAJ, May 2016

    Google Scholar 

  13. Koval, K.: Swift High Performance. Packt Publishing Ltd., VfioCwAAQBAJ google-Books-ID: VoCwAAQBAJ, November 2015

    Google Scholar 

  14. Ballou, K.: Learning Elixir. Packt Publishing Ltd., google-Books-ID:ogUcDAAAQBAJ, January 2016

    Google Scholar 

  15. Alexander, A.: Scala Cookbook: Recipes for Object-Oriented and Functional Programming. O’Reilly Media, Inc., google-Books-ID:BSo2AAAAQBAJ, August 2013

    Google Scholar 

  16. Borges, L.: Clojure Reactive Programming. Packt Publishing Ltd., google-Books-ID: 1tePBwAAQBAJ, March 2015

    Google Scholar 

  17. 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)

    Google Scholar 

  18. Hu, Z., Hughes, J., Wang, M.: How functional programming mattered. National Sci. Rev. 2(3), 349–370 (2015)

    Article  Google Scholar 

  19. Luca Cardelli, P.W.: On Understanding Types, Data Abstraction, and Polymorphism, December 1985. http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf

  20. Crockford, D.: JavaScript: The Good Parts: The Good Parts. O’Reilly Media, Inc., google-Books-ID: PXa2bby0oQ0C, May 2008

    Google Scholar 

  21. ECMAScript Language Specification, December 2009. http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262

  22. ECMAScript 2016 Language Specification, June 2016. http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

  23. ECMAScript 6 compatibility table, November 2016. http://kangax.github.io/compat-table/es6/

  24. Lodash. https://lodash.com/

  25. Underscore.js. http://underscorejs.org/

  26. Immutable.js. https://facebook.github.io/immutable-js/

  27. amdjs/amdjs-api. https://github.com/amdjs/amdjs-api

  28. A Beginner’s Guide to Currying in Functional JavaScript, October 2015. https://www.sitepoint.com/currying-in-functional-javascript/

  29. Ramda Documentation. http://ramdajs.com/

  30. Daggett, M.E.: Expert JavaScript. Apress, google-Books-ID: HpoQAwAAQBAJ, November 2013

    Google Scholar 

  31. Prusty, N.: Learning ECMAScript 6. Packt Publishing Ltd., google-Books-ID: 9O13CgAAQBAJ, August 2015

    Google Scholar 

  32. ECMAScript 6: New Features: Overview and Comparison. http://es6-features.org/#Lexicalthis

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Lukáš Janeček .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics