Course:
Lambdas at UvA
Headline
A Haskell-based functional programming course at UvA
Information
See http://softlang.uni-koblenz.de/1608-amsterdam.pdf for general information.
You may contact the lecturer Ralf Lämmel at rlaemmel@gmail.com.
Lecture topics
Basic functional programming concepts
- Function
- Function definition
- Function application
- Type signature
- Function composition
- Immutable list
- Immutable tuple
- Pattern matching
- Type checking
- Type inference
Basic software engineering methods
- Modularization with Haskell modules
- Local scope
- Unit testing with Technology:HUnit
- Packaging with Technology:Cabal
- Packaging with Technology:HackageDB
- Documentation generation with Technology:Haddock
Searching and sorting
- The search problem
- Search algorithms
- The sorting problem
- Sorting algorithms
- Additional concepts
Data modeling
- Forms of typing
- Forms of type declarations
- Data modelling-related concepts
- Reusable (data) type constructors
Functional data structures
- Abstract data types
- ADT implementations
- Concepts
Higher-order functions
- Concepts
- List comprehensions
- Anonymous functions
- Lambda abstractions
- Representative higher-order functions
- The Map function
- The Fold function
- The Filter function
- The Zip function
Type-class polymorphism
- Type classes
- Type-class instancees
- The type class Eq for equality
- The type class Ord for comparison
- The type class Num for numbers
- The type class Monoid for monoids
Functors and friends
- Functor
- Applicative functor
- Foldable type
- Higher-kinded polymorphism
- Rose trees
- Bidirectional transformations
- Data parallelism
Combinator libraries
- Domains
- Parsing-related concepts
- Combinator libraries
- Technology:HughesPJ (pretty printing combinators)
- Technology:Parsec (parser combinators)
- Contributions
- Contribution:hughesPJ: Illustration of pretty printing
- Contribution:haskellAcceptor: Illustration of parsing (acceptance only)
- Contribution:haskellParsec: Illustration of parsing
Monads
- The notion of monad
- Specific monads
- The State monad
- The Maybe monad
- The Writer monad
- Contributions
- Contribution:haskellLogging: Logging changes
- Contribution:haskellWriter: Logging changes monadically
Appendix
Simple program samples
- Factorial
- Greatest common divisor
- Linear search
- Stacks
- Queues
- Binary search trees
- Skew heaps
- Reverse Polish notation
The Haskell platform
- Technology:GHC
- Technology:GHCi
- Technology:Cabal
- Technology:HackageDB
- Technology:Haddock
- Technology:HUnit
- Technology:HughesPJ
- Technology:Parsec
Sample systems
These systems are concerned with employee data in companies.
- Contribution:haskellStarter: A very basic system
- Contribution:haskellEngineer: Basic software engineering at work
- Contribution:haskellBarchart: Illustration of chart generation
- Contribution:haskellList: Use map and sum
- Contribution:haskellLambda: Use anonymous functions
- Contribution:haskellProfessional: Feature-richer implementation
- Contribution:haskellData: Use algebraic data types
- Contribution:haskellRecord: Use record types
- Contribution:haskellComposition: Use data composition
- Contribution:haskellVariation: Use data variation
- Contribution:haskellMonoid: Use monoids
- Contribution:haskellTree: Use of transformation]
- Contribution:haskellFlattened: Illustration of data parallelism
- Contribution:hughesPJ: Illustration of pretty printing
- Contribution:haskellAcceptor: Illustration of parsing (acceptance only)
- Contribution:haskellParsec: Illustration of parsing
- Contribution:haskellLogging: Logging changes
- Contribution:haskellWriter: Logging changes monadically
System features
- Feature:Flat company: Companies as containers of employees
- Feature:Hierarchical company: Companies as department trees
- Feature:Total: Total the salaries of all employes
- Feature:Cut: Cut the salaries in half
- Feature:Median: Compute median of salaries
- Feature:Depth: Compute the hierachical nesting depth
- Feature:Ranking: Constraint on salaries to align with rank
- Feature:Mentoring: Associate mentee and mentors
- Feature:History: Analyse salary changes over time
- Feature:Logging: Logging changes of employee data
There are no revisions for this page.
User contributions
User edits
Syntax for editing wiki
For you are available next options:will make text bold.
will make text italic.
will make text underlined.
will make text striked.
will allow you to paste code headline into the page.
will allow you to link into the page.
will allow you to paste code with syntax highlight into the page. You will need to define used programming language.
will allow you to paste image into the page.
is list with bullets.
is list with numbers.
will allow your to insert slideshare presentation into the page. You need to copy link to presentation and insert it as parameter in this tag.
will allow your to insert youtube video into the page. You need to copy link to youtube page with video and insert it as parameter in this tag.
will allow your to insert code snippets from @worker.
Syntax for editing wiki
For you are available next options:will make text bold.
will make text italic.
will make text underlined.
will make text striked.
will allow you to paste code headline into the page.
will allow you to link into the page.
will allow you to paste code with syntax highlight into the page. You will need to define used programming language.
will allow you to paste image into the page.
is list with bullets.
is list with numbers.
will allow your to insert slideshare presentation into the page. You need to copy link to presentation and insert it as parameter in this tag.
will allow your to insert youtube video into the page. You need to copy link to youtube page with video and insert it as parameter in this tag.
will allow your to insert code snippets from @worker.