IT5100A
Industry Readiness: Typed Functional Programming
by Foo Yong Qi
GitHub
·
Report Bug
·
Request Feature
This is a set of lecture notes for students enrolled in IT5100A—Industry Readiness: Typed Functional Programming in NUS SoC.
About IT5100A
Typed functional programming are becoming more widely adopted in industry, as can be seen in the success of a number of advanced programming languages, such as OCaml, Haskell and Scala 3. These advanced languages offer a range of expressive features to allow robust, reusable and high-performing software codes to be safely and rapidly developed. This course will cover key programming techniques of typed functional programming that are becoming widely adopted, such as strong typing, code composition and abstraction, effect handlers, and safe techniques for asynchronous and concurrent programming.
About These Notes
I hope that these notes can be used as good supplementary material for those looking to learn the concepts of Typed Functional Programming in more detail. Each of these chapters comes with exercises in Python and Haskell so that you're able to replicate some of the ideas from purely-functional languages in general-purpose multi-paradigm languages.
Therefore, to avoid confusion, code blocks are annotated with the logo of the target programming language on the left. Examples below. (Readers on mobile might have to rotate their phones to landscape to view the logos.)
Python
this = 'is some Python code'
Haskell
this :: String
this = "is some Haskell code"
Java
class This {
public static void main(String[] args) {
System.out.println("is some Java code");
}
}
Lean 4
def this: String := "is some Lean 4 code"
Updates
This work is incomplete, and therefore will be regularly updated. As such, please run a hard refresh (Ctrl
+ F5
) every time you visit the page.
A badge is shown at the beginning of every page describing when it was last updated. The badge looks like this:
Ensure that the badge displays the expected date of the last update.
Contributing
This project is a single-author text, and is incomplete. Thus, this project is not open to pull requests without prior agreement. However, please feel free to improve the quality of this content by submitting bug reports and feature requests. All your contributions other than by the author will be considered a donation of your work to this project, and you are not considered an author or owner of the content once they have been incorporated.
Please submit all requests for content and bugs either as a GitHub issue or contact the author directly.
Contributors
License
All rights to this project are reserved by the author. Unauthorized reproduction, distribution, or modification of this project, in whole or in part, is strictly prohibited without prior written permission. The author reserves the right to modify or change the licensing terms at any time and without prior notice. For inquiries regarding licensing or usage, please contact the author.
Logos and other external assets used in this project do not belong to the author.
Contact
Author: Foo Yong Qi - yongqi@nus.edu.sg
© 2024 Foo Yong Qi. All Rights Reserved.
Release History
2024
Date | Description |
---|---|
26 Oct | Writeup on Concurrent and Parallel Programming, excluding exercises |
13 Oct | Writeup on Monads, excluding exercises |
10 Oct | Writeup on the existential typeclass pattern |
28 Sep |
|
26 Sep | The first draft of these notes have been released with the first four chapters completed. |