These lecture notes by Piyush
P Kurur elaborates on various functional programming topics in depth. The
contents of the following topics are functional programming-introduction,
pattern matching, and some useful algorithms like The Sieve of Eratosthenes and
the Fibonacci Series. Advanced topics include folding of lists, lambda calculus,
modules, type inference, and type classes. Examples of practical applications,
such as an expression evaluator and functions with variable arguments, will
provide learners with a sense of how theoretical material might be applied in
real-world situations. These detailed lecture notes are intended for readers who
would like to go through functional programming in depth - both explanations and
exercises.
This
is a resource provided by Loyola Marymount University on functional programming.
It starts with a basic explanation and goes further into how one can make a
shift from imperative programming to functional. The key topics it covers are
higher-order functions, which are the backbone for doing functional programming
in order to write abstract code reuse. This paper describes closures and purity,
including side effects, in detail to apprise the reader about the value of
immutability and functional purity. It describes both the functional and
object-oriented programming paradigms, then it points to point-free programming,
and concludes with an overview of the functional programming landscape. This
should be a good reference for students and practitioners alike who want to know
about the basics in functional programming and its theoretical underpinnings.
John Harrison's
'Introduction to Functional Programming', This set of notes provides a very
accessible introduction to the fundamental principles and methods of functional
programming in general. The PDF begins with an investigation of lambda calculus
as a theoretical framework for functional programming and proceeds further with
the review of its application as a programming language. Types are considered in
the notes just to give a glimpse into type systems and how they play their role
in functional programming. This document serves as an introduction to ML: a
meta-language that practically introduces the concepts of programming. It also
covers the importance of proving programs correct by describing methods for the
reliability of programs. Finally, effective ML covers the best practices and
techniques to write robust and efficient functional programs. This book is a
good reference for learners who want to understand both the theoretical
underpinnings and practical application of functional programming.
These lecture notes by Piyush
P Kurur elaborates on various functional programming topics in depth. The
contents of the following topics are functional programming-introduction,
pattern matching, and some useful algorithms like The Sieve of Eratosthenes and
the Fibonacci Series. Advanced topics include folding of lists, lambda calculus,
modules, type inference, and type classes. Examples of practical applications,
such as an expression evaluator and functions with variable arguments, will
provide learners with a sense of how theoretical material might be applied in
real-world situations. These detailed lecture notes are intended for readers who
would like to go through functional programming in depth - both explanations and
exercises.
Authored by Graham Hutton, this online course module introduces the basic
axioms of functional programming using Haskell, which is a modern functional
programming language. It introduces the learner to the basic ideas of functional
programming: immutability of data, purity of function, higher-order functions.
Students will work through practical examples and exercises to build a firm
grasp of methods in functional programming. This course is aimed at
understanding and applying core principles in Haskell to enable learners to
fathom the advantages and paradigms of functional programming. Therefore, it's a
good resource for beginners who wish to investigate functional programming
through getting their hands dirty with Haskell.