On-Site Functional Programming Training
Los Angeles, CA
Functional Programming (FP) is a software development paradigm gaining popularity and offering massive productivity gains.
Many modern languages support functional programming with strong types, and ideas are quickly making their way from academia into mainstream programming.
Our objective is to help programmers to understand and take advantage of functional aspects of modern programming languages.
Jeff Polakow has experience with all major programming paradigms, and most modern languages. However, as his patience varies inversely with age, he now only accepts jobs involving higher-order strongly-typed functional programming.
Our tutorials will cover a specified curriculum and are designed to be interactive learning sessions rather than lectures. Additionally, we will include quizzes to check understanding through the course of each tutorial.
We can customize our tutorials to the language of your choice, i.e. we can customize the concrete syntax of the code found in our tutorials.
We can also customize our content to deal with semantic quirks of your favorite modern programming language's lambda calculus.
We emphasize how functional design along with strong typing allow for maximum code reuse and minimal uncertainty during refactoring.
This lecture will concentrate on techniques from functional programming which can be used to improve code in a variety of mainstream programming languages, such as referential transparency and immutable data structures, abstraction patterns and the importance of composability.
This is the basis of functional programming and every functional programmer should have basic familiarity with the formalism. In addition to basic concepts (e.g. substitution), we can also delve into the differences between eager and lazy evaluation strategies.
We will look at some of the features of advanced type systems, such as various forms of polymorphism, record types, subtyping, dependent types, and how these interact with each other. As a case study, we will look at the ML type system.
Recursion is particularly common in functional languages and plays a role similar to iteration in imperative languages.
Lists provide many examples of the power of higher order functions. Many common programs on lists can be expressed using the very general concepts of map and fold.
Domain Specific Languages or DSLs are small programming languages designed to facilitate the solution of problems in a particular domain. DSLs are particularly well implemented in functional languages. We can provide example implementations of DSLs and demonstrate their benefits, or tailor this topic to your particular business domain.
QuickCheck is a property-based testing library written in Haskell, with ports available in several languages. It can be used to generate test cases automatically from a functional specification. It is a great demonstration of the power of programming in the functional style, making use of language features such as type classes and higher order functions.