Recent Changes · Search:

Functional Programming

Type Inference

Toss

  • (incorporates former Speagram)

Emacs

Kurs Pascala

Artificial General Intelligence

AI:

Algorithmic Game Theory: Prediction Markets (po polsku)

Programming in Java

kurs pracy w systemie Linux

Evolutionary Algorithms

Animation

Data Stores and Data Mining

Language Understanding

Systemy Inteligentnych Agentów

Przetwarzanie Języka Naturalnego

Programowanie Funkcjonalne

PmWiki

pmwiki.org

add user

edit SideBar

Functional.Functional History

Hide minor edits - Show changes to output

July 06, 2015, at 09:45 PM by lukstafi - FRP links
Added lines 88-89:
** [[http://www.umut-acar.org/self-adjusting-computation | Self-Adjusting Computation]] at Umut Acar's website.
** ''NEW:'' [[https://github.com/janestreet/incremental/ | Incremental: a library for incremental computations]].
May 17, 2015, at 05:36 PM by lukstafi - updated plans for lecture 12
Changed lines 96-97 from:
# Lecture 12: OCaml Standard Libraries. ''Batteries'' and ''Core''.
# Lecture 13: Category Theory for Functional Programmer. Overview of Haskell's standard library. Invitation to Category Theory. Theory of monads.
to:
# Lecture 12: Standard Libraries. Haskell's ''type classes''. OCaml's alternatives ''Batteries'' and ''Core'', and Haskell Hierarchical Libraries.
# Lecture 13: Category Theory for Functional Programmer
. Invitation to Category Theory.
Changed line 124 from:
!! Installing on Debian-derived systems (e.g. Ubuntu):
to:
!!! Installing on Debian-derived systems (e.g. Ubuntu):
May 07, 2015, at 02:05 PM by lukstafi - Mentioning Richard Bird book.
Changed lines 3-4 from:
This is a course on Functional Programming in [[http://ocaml.org/ | OCaml]]. It focuses on functional programming ideas, rather than pragmatic OCaml programming. Lectures 1 to 6 may appear overwhelming as they introduce many concepts. In fact, the algorithmic content of lectures 1-6 is for the most part quite simple, but I wanted them to force the students to ''think from scratch''. Concepts from lectures 7, 8, 10 are more prevalent in Haskell, because OCaml programmers can judiciously use imperative features to avoid introducing complexity. In particular, monadic programming has better optimization support in Haskell than in OCaml. Lecture 9 (and lectures 12, 14 to come) address the pragmatics of OCaml programming directly.
to:
This is a course on Functional Programming in [[http://ocaml.org/ | OCaml]]. It focuses on functional programming ideas, rather than pragmatic OCaml programming. Lectures 1 to 6 may appear overwhelming as they introduce many concepts. In fact, the algorithmic content of lectures 1-6 is for the most part quite simple, but I wanted them to force the students to ''think from scratch''. Concepts from lectures 7, 8, 10 are more prevalent in Haskell, because OCaml programmers can judiciously use imperative features to avoid introducing complexity. In particular, monadic programming has better optimization support in Haskell than in OCaml. Lecture 9 (and lectures 12, 14 to come) address the pragmatics of OCaml programming directly. To be a well-rounded functional programmer, you should also complete a complementary course based on the book ''Pearls of Functional Algorithm Design'' by Richard Bird. Or you can intersperse reading ''Pearls of Functional Algorithm Design'' with following this course. (Perhaps I'll do something about it.)
Changed line 124 from:
@!! Installing on Debian-derived systems (e.g. Ubuntu):
to:
!! Installing on Debian-derived systems (e.g. Ubuntu):
May 05, 2015, at 10:11 AM by lukstafi - Description update
Changed lines 3-4 from:
The course will be taught in [[http://caml.inria.fr/ | OCaml]], with translations to [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]]. Most of the exercise solutions should be straightforward to translate between OCaml and F#.
to:
This is a course on Functional Programming in [[http://ocaml.org/ | OCaml]]. It focuses on functional programming ideas, rather than pragmatic OCaml programming. Lectures 1 to 6 may appear overwhelming as they introduce many concepts. In fact, the algorithmic content of lectures 1-6 is for the most part quite simple, but I wanted them to force the students to ''think from scratch''. Concepts from lectures 7, 8, 10 are more prevalent in Haskell, because OCaml programmers can judiciously use imperative features to avoid introducing complexity. In particular, monadic programming has better optimization support in Haskell than in OCaml. Lecture 9 (and lectures 12, 14 to come) address the pragmatics of OCaml programming directly.

Initial lectures have examples translated to [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]], but then I decided to focus on OCaml
.
Changed line 19 from:
** ''New'': [[https://realworldocaml.org/ | Real World OCaml]] book.
to:
** [[https://realworldocaml.org/ | Real World OCaml]] book.
Changed lines 26-27 from:
* ''New'': [[https://haifengl.wordpress.com/category/computer-science/functional-programming/ocaml/ | OCaml Tutorial for functional programming beginners]]
to:
* [[https://haifengl.wordpress.com/category/computer-science/functional-programming/ocaml/ | OCaml Tutorial for functional programming beginners]]
Changed line 56 from:
** Examples: [[Attach:Lec6.ml]], incomplete: [[Attach:Lec6.fs]].
to:
** Examples: [[Attach:Lec6.ml]].
Changed lines 108-111 from:
!! Installing on Windows:
to:
!! Installing on a desktop:
The instructions below are outdated. Go to [[http://ocaml.org/docs/install.html | ocaml.org / Install OCaml]] if you do not have OCaml working yet.

!
!! Installing on Windows:
Changed line 124 from:
!! Installing on Debian-derived systems (e.g. Ubuntu):
to:
@!! Installing on Debian-derived systems (e.g. Ubuntu):
May 04, 2015, at 08:08 PM by lukstafi - link to monadic parsing paper
Changed line 86 from:
# [[#curlecture]] [[Attach:functional-lecture11.pdf | Lecture 11: the Expression Problem.]] Comparison of object-oriented and function-oriented program organization. Type system concepts for solving ''the Expression Problem''. "Intellisense".
to:
# [[#curlecture]] [[Attach:functional-lecture11.pdf | Lecture 11: the Expression Problem.]] Type system concepts for solving ''the Expression Problem'' with introduction to OCaml's objects and classes. Monadic parsing and dynamic code loading.
Added line 93:
** Graham Hutton and Erik Meijer: [[https://www.cs.nott.ac.uk/~gmh/monparsing.pdf | Monadic Parser Combinators]].
Changed line 89 from:
** Ralf Lämmel lectures on MSDN's Channel 9: [[http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem | The Expression Problem]], [[http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Type-Classes | Haskell's Type Classes]].
to:
** Ralf Laemmel lectures on MSDN's Channel 9: [[http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem | The Expression Problem]], [[http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Type-Classes | Haskell's Type Classes]].
April 23, 2015, at 12:24 AM by lukstafi - better organized links lecture 11
Changed lines 89-92 from:
** [[http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora138.html | Developing Applications With Objective Caml. Chapter 15: Object-Oriented Programming]].
** [[http:
//caml.inria.fr/pub/docs/oreilly-book/html/book-ora151.html | Developing Applications With Objective Caml. Chapter 16: Comparison of the Models of Organisation]].
**
[[https://realworldocaml.org/v1/en/html/objects.html | Real World OCaml. Chapter 11: Objects]].
**
[[https://realworldocaml.org/v1/en/html/classes.html | Real World OCaml. Chapter 12: Classes]].
to:
** Ralf Lämmel lectures on MSDN's Channel 9: [[http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem | The Expression Problem]], [[http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Type-Classes | Haskell's Type Classes]].
** Developing Applications With Objective Caml. [[http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora138.html | Chapter 15: Object-Oriented Programming]], [[http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora151.html | Chapter 16: Comparison of the Models of Organisation]].
** Real World OCaml. [[https://realworldocaml.org/v1/en/html/objects.html | Chapter 11: Objects]], [[https://realworldocaml.org/v1/en/html/classes.html | Chapter 12: Classes]].
** Jacques Garrigue: [[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.8079 | Code Reuse Through Polymorphic Variants]], [[http://www.cs.ox.ac.uk/ralf.hinze/WG2.8/22/slides/jacques.pdf | Structural Types, Recursive Modules, and the Expression Problem
]].
April 22, 2015, at 08:47 PM by lukstafi - Lecture 11 links
Changed line 57 from:
** Examples: [[Attach:Lec7.ml]], incomplete: [[Attach:Lec7.fs]].
to:
** Examples: [[Attach:Lec7.ml]].
Changed lines 60-61 from:
** I planned to cover computational expresions from F#, but... in next edition of the course perhaps.
** Examples: [[Attach:Lec8.ml]], incomplete: [[Attach:Lec8.fs
]].
to:
** Examples: [[Attach:Lec8.ml]].
Changed line 80 from:
# [[#curlecture]] [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Adaptive Programming aka. Self-Adjusting Computation. Functional Reactive Programming i.e. temporal programming. GUIs.
to:
# [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Adaptive Programming aka. Self-Adjusting Computation. Functional Reactive Programming i.e. temporal programming. GUIs.
Changed lines 86-92 from:
# Lecture 11: the Expression Problem. Comparison of object-oriented and function-oriented program organization. Type system concepts for solving ''the Expression Problem''. "Intellisense". I might prepare lecture 11 this {-summer-} fall.
to:
# [[#curlecture]] [[Attach:functional-lecture11.pdf | Lecture 11: the Expression Problem.]] Comparison of object-oriented and function-oriented program organization. Type system concepts for solving ''the Expression Problem''. "Intellisense".
** Examples: [[Attach:Lec11.zip]].
** [[Attach:functional-lecture11exs.pdf | Exercises]].
** [[http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora138.html | Developing Applications With Objective Caml. Chapter 15: Object-Oriented Programming]].
** [[http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora151.html | Developing Applications With Objective Caml. Chapter 16: Comparison of the Models of Organisation]].
** [[https://realworldocaml.org/v1/en/html/objects.html | Real World OCaml. Chapter 11: Objects]].
** [[https://realworldocaml.org/v1/en/html/classes.html | Real World OCaml. Chapter 12: Classes]]
.
Changed line 95 from:
# Lecture 14: Parallelism. Sharing memory across processes, MPI, and more. I might prepare lecture 14 next year (2014).
to:
# Lecture 14: Parallelism. Sharing memory across processes, MPI, and more.
January 02, 2015, at 07:28 PM by lukstafi - new link typeocaml
Changed lines 6-7 from:
* ''New'': [[https://github.com/rizo/awesome-ocaml | Awesome OCaml links]].
to:
* ''New'': [[http://typeocaml.com/ | Type OCaml]] -- impressive site teaching functional programming in OCaml.
*
[[https://github.com/rizo/awesome-ocaml | Awesome OCaml links]].
September 07, 2014, at 06:19 PM by lukstafi - optimization link
Added line 79:
** ''New'': [[http://pelzlpj.github.io/capnp-ocaml/2014/09/02/capnp-ocaml-2.0/ | capnp-ocaml 2.0: The Road to Unembarrassing Performance]] -- a blog post about optimizing an OCaml serialization plugin.
September 07, 2014, at 06:06 PM by lukstafi - New link
Changed lines 6-7 from:
* ''New'': [[http://ocaml-book.com/videos/ | OCaml from the Very Beginning]] by John Whitington (book and) a couple of video lectures for extreme beginners.
* ''New'':
[[http://www.typerex.org/ocaml-top.html | OCaml-Top editor]] suited for solving exercises.
to:
* ''New'': [[https://github.com/rizo/awesome-ocaml | Awesome OCaml links]].
* [[http://ocaml-book.com/videos/ | OCaml from the Very Beginning]] by John Whitington (book and) a couple of video lectures for extreme beginners.
*
[[http://www.typerex.org/ocaml-top.html | OCaml-Top editor]] suited for solving exercises.
July 22, 2014, at 06:52 AM by lukstafi - tutorial link
Added line 22:
* ''New'': [[https://haifengl.wordpress.com/category/computer-science/functional-programming/ocaml/ | OCaml Tutorial for functional programming beginners]]
December 28, 2013, at 02:33 PM by lukstafi - removing the demoralizing talk
Deleted line 27:
* The demoralizing talk: [[http://www.infoq.com/presentations/functional-pros-cons | Deconstructing Functional Programming]] puts under fire what we learn here.
December 28, 2013, at 10:12 AM by lukstafi - Gilad Bracha talk link
Added line 28:
* The demoralizing talk: [[http://www.infoq.com/presentations/functional-pros-cons | Deconstructing Functional Programming]] puts under fire what we learn here.
November 12, 2013, at 07:50 PM by lukstafi - RWOCaml book link
Added line 15:
** ''New'': [[https://realworldocaml.org/ | Real World OCaml]] book.
Deleted line 17:
** You can arrange to score bonus points for implementing a project, unrelated to course assignments, in OCaml, F# (if the code is not too C#-like) or Haskell, but you would have to report on your progress systematically.
November 12, 2013, at 07:48 PM by lukstafi - 99 problems: Prolog and Scala links
Changed lines 10-11 from:
** In particular, [[http://www.ocaml.org/tutorials/99problems.html | practice!]]
*** And for comparison, [[http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems | Ninety-Nine Haskell Problems]].
to:
** In particular, [[http://www.ocaml.org/tutorials/99problems.html | practice! (99 problems)]]
*** The original [[https://sites.google.com/site/prologsite/prolog-problems | Prolog Problems]],
*** [[http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems | Ninety-Nine Haskell Problems]],
*** and ''new'': [[http://aperiodic.net/phil/scala/s-99/ | S-99: Ninety-Nine Scala
Problems]].
September 28, 2013, at 02:00 PM by lukstafi - beginner book
Added line 6:
* ''New'': [[http://ocaml-book.com/videos/ | OCaml from the Very Beginning]] by John Whitington (book and) a couple of video lectures for extreme beginners.
September 20, 2013, at 08:39 PM by lukstafi - reordering remaining lectures
Changed line 81 from:
# Lecture 12: Parallelism. Sharing memory across processes. MPI. I might prepare lecture 12 this winter.
to:
# Lecture 12: OCaml Standard Libraries. ''Batteries'' and ''Core''.
Changed line 83 from:
# Lecture 14: OCaml Standard Libraries. ''Batteries'' and ''Core''.
to:
# Lecture 14: Parallelism. Sharing memory across processes, MPI, and more. I might prepare lecture 14 next year (2014).
Changed line 80 from:
# Lecture 11: the Expression Problem. Comparison of object-oriented and function-oriented program organization. Type system concepts for solving ''the Expression Problem''. I might prepare lecture 11 this summer.
to:
# Lecture 11: the Expression Problem. Comparison of object-oriented and function-oriented program organization. Type system concepts for solving ''the Expression Problem''. "Intellisense". I might prepare lecture 11 this {-summer-} fall.
August 24, 2013, at 08:26 PM by lukstafi - Haskell 99 Problems
Added line 10:
*** And for comparison, [[http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems | Ninety-Nine Haskell Problems]].
August 07, 2013, at 04:03 PM by lukstafi - lecture 14 idea
Changed lines 81-82 from:
# Lecture 13: Category Theory for Functional Programmer. Overview of Haskell's library. Invitation to Category Theory. Theory of monads.
to:
# Lecture 13: Category Theory for Functional Programmer. Overview of Haskell's standard library. Invitation to Category Theory. Theory of monads.
# Lecture 14: OCaml Standard Libraries. ''Batteries'' and ''Core''
.
August 05, 2013, at 11:45 AM by lukstafi - lecture 13 proposal
Added line 81:
# Lecture 13: Category Theory for Functional Programmer. Overview of Haskell's library. Invitation to Category Theory. Theory of monads.
July 09, 2013, at 06:29 PM by lukstafi - OCaml-Top editor link
Added line 6:
* ''New'': [[http://www.typerex.org/ocaml-top.html | OCaml-Top editor]] suited for solving exercises.
June 06, 2013, at 09:16 PM by lukstafi - janestreet link
Added line 71:
** [[http://janestreet.github.io/ocaml-perf-notes.html | Writing Performance Sensitive OCaml Code]]
April 22, 2013, at 10:43 AM by lukstafi - Lectures 11 and 12 not prepared yet.
Changed lines 77-78 from:
# [[Attach:functional-lecture11.pdf | Lecture 11: the Expression Problem.]] Comparison of object-oriented and function-oriented program organization. Type system concepts for solving ''the Expression Problem''.
# [[Attach:functional-lecture12.pdf | Lecture 12: Parallelism.]] Sharing memory across processes. MPI.
to:
# Lecture 11: the Expression Problem. Comparison of object-oriented and function-oriented program organization. Type system concepts for solving ''the Expression Problem''. I might prepare lecture 11 this summer.
# Lecture 12: Parallelism. Sharing memory across processes. MPI. I might prepare lecture 12 this winter.
Changed lines 6-8 from:
* A community site for OCaml: [[http://www.ocaml-lang.org/index.html | The OCaml Programming Language]].
** I recommend [[http://www.ocaml-lang.org/tutorials/ | OCaml comprehensive tutorial]]
** In particular, [[http://www.ocaml-lang.org/tutorials/99problems.html | practice!]]
to:
* A community site for OCaml: [[http://www.ocaml.org/index.html | The OCaml Programming Language]].
** I recommend [[http://www.ocaml.org/tutorials/ | OCaml comprehensive tutorial]]
** In particular, [[http://www.ocaml.org/tutorials/99problems.html | practice!]]
Changed line 80 from:
Contact me if you would like to receive our exam exercise sets. They are based in half on [[http://www.ocaml-lang.org/tutorials/99problems.html | 99 problems]].
to:
Contact me if you would like to receive our exam exercise sets. They are based in half on [[http://www.ocaml.org/tutorials/99problems.html | 99 problems]].
March 20, 2013, at 08:53 PM by lukstafi - exam note
Added lines 80-81:
Contact me if you would like to receive our exam exercise sets. They are based in half on [[http://www.ocaml-lang.org/tutorials/99problems.html | 99 problems]].
Changed line 76 from:
** [[http://caml.inria.fr/pub/docs/manual-ocaml/manual042.html | Using LablTk]], [[https://who.rocq.inria.fr/Francois.Thomasset/Labltk/Tutoriel_FT/ | LablTk tutorial]], [[http://www.cs.uiuc.edu/class/sp07/cs421/resources/labltk/ | LablTk older tutorial]], [[http://ocaml.org/tutorials/introduction_to_gtk.html |LablGtk tutorial]], [[http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/ | LablGtk2 tutorial]].
to:
** [[http://caml.inria.fr/pub/docs/manual-ocaml/manual042.html | Using LablTk]], [[https://who.rocq.inria.fr/Francois.Thomasset/Labltk/Tutoriel_FT/ | LablTk tutorial]], [[http://www.cs.uiuc.edu/class/sp07/cs421/resources/labltk/ | LablTk older tutorial]], [[http://lablgtk.forge.ocamlcore.org/ | using LablGtk]], [[http://ocaml.org/tutorials/introduction_to_gtk.html |LablGtk tutorial]], [[http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/ | LablGtk-2 tutorial]].
Changed line 76 from:
** [[http://caml.inria.fr/pub/docs/manual-ocaml/manual042.html | Using LablTk]], [[https://who.rocq.inria.fr/Francois.Thomasset/Labltk/Tutoriel_FT/ | LablTk tutorial]], [[https://who.rocq.inria.fr/Francois.Thomasset/Labltk/Tutoriel_FT/ | LablTk older tutorial]], [[http://ocaml.org/tutorials/introduction_to_gtk.html |LablGtk tutorial]], [[http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/ | LablGtk2 tutorial]].
to:
** [[http://caml.inria.fr/pub/docs/manual-ocaml/manual042.html | Using LablTk]], [[https://who.rocq.inria.fr/Francois.Thomasset/Labltk/Tutoriel_FT/ | LablTk tutorial]], [[http://www.cs.uiuc.edu/class/sp07/cs421/resources/labltk/ | LablTk older tutorial]], [[http://ocaml.org/tutorials/introduction_to_gtk.html |LablGtk tutorial]], [[http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/ | LablGtk2 tutorial]].
March 11, 2013, at 05:54 PM by lukstafi - LablTk, LablGtk
Changed line 60 from:
# [[#curlecture]] [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
to:
# [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
Changed line 71 from:
# [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Adaptive Programming aka. Self-Adjusting Computation. Functional Reactive Programming i.e. temporal programming. GUIs.
to:
# [[#curlecture]] [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Adaptive Programming aka. Self-Adjusting Computation. Functional Reactive Programming i.e. temporal programming. GUIs.
Added line 76:
** [[http://caml.inria.fr/pub/docs/manual-ocaml/manual042.html | Using LablTk]], [[https://who.rocq.inria.fr/Francois.Thomasset/Labltk/Tutoriel_FT/ | LablTk tutorial]], [[https://who.rocq.inria.fr/Francois.Thomasset/Labltk/Tutoriel_FT/ | LablTk older tutorial]], [[http://ocaml.org/tutorials/introduction_to_gtk.html |LablGtk tutorial]], [[http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/ | LablGtk2 tutorial]].
Changed line 74 from:
** Examples: [[Attach:Lec10.ml]].
to:
** Examples: [[Attach:Lec10.zip]].
February 26, 2013, at 12:56 PM by lukstafi - win install link
Added line 93:
* See also [[http://caml.inria.fr/pub/distrib/ocaml-4.00/notes/README.win32 | OCaml 4.0 Win readme]].
February 25, 2013, at 09:38 AM by lukstafi - Lecture 12 topic
Changed lines 77-78 from:
to:
# [[Attach:functional-lecture12.pdf | Lecture 12: Parallelism.]] Sharing memory across processes. MPI.
Added line 73:
** [[http://ambassadortothecomputers.blogspot.com/2010/05/how-froc-works.html | How ''Froc'' works]]
Added lines 72-74:
** [[http://en.wikibooks.org/wiki/Haskell/Zippers | Zippers at Haskell Wikibook]]
** Examples: [[Attach:Lec10.ml]].
** [[Attach:functional-lecture10exs.pdf | Exercises]].
Changed line 51 from:
# [[Attach:functional-lecture08.pdf | Lecture 8: Monads.]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads. [4-5 hours]
to:
# [[Attach:functional-lecture08.pdf | Lecture 8: Monads.]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads. [7 hours]
Changed line 71 from:
# [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Adaptive Programming aka. Self-Adjusting Computation. Functional Reactive Programming i.e. temporal programming.
to:
# [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Adaptive Programming aka. Self-Adjusting Computation. Functional Reactive Programming i.e. temporal programming. GUIs.
February 01, 2013, at 11:21 AM by lukstafi - Lecture 10 topics
Changed line 71 from:
# [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Functional Reactive Programming.
to:
# [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Adaptive Programming aka. Self-Adjusting Computation. Functional Reactive Programming i.e. temporal programming.
Changed line 65 from:
*** [[Attach:Lec9m.zip]] -- extracting emails by an @@ocamllex@@ program.
to:
*** [[Attach:Lec9m.zip]] -- extracting email addresses by an @@ocamllex@@ program.
Changed line 51 from:
# [[#curlecture]] [[Attach:functional-lecture08.pdf | Lecture 8: Monads.]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads. [4-5 hours]
to:
# [[Attach:functional-lecture08.pdf | Lecture 8: Monads.]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads. [4-5 hours]
Changed line 60 from:
# [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
to:
# [[#curlecture]] [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
Changed lines 62-68 from:
** Examples: [[Attach:Lec9.zip]].
to:
** Examples:
*** [[Attach:Lec9b.zip]] -- compiling multifile projects.
*** [[Attach:Lec9o.zip]] -- optimization experiments.
*** [[Attach:Lec9m.zip]] -- extracting emails by an @@ocamllex@@ program.
*** [[Attach:Lec9-calc-param.zip]] -- calculator.
*** [[Attach:Lec9e.zip]] -- toy English grammar.
*** [[Attach:Lec9c.zip]] -- phrase search experiments
.
Changed lines 60-61 from:
# [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir. Lecture is OCaml-specific.
to:
# [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
** This lecture is OCaml-specific, and least functional-programming-ish in the course.
Changed line 60 from:
# [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
to:
# [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir. Lecture is OCaml-specific.
Changed lines 65-66 from:
# [[Attach:functional-lecture11.pdf | Lecture 11: the Expression Problem.]] Comparison of object-oriented and function-oriented program organisation. Type system concepts for solving ''the Expression Problem''.
to:
# [[Attach:functional-lecture11.pdf | Lecture 11: the Expression Problem.]] Comparison of object-oriented and function-oriented program organization. Type system concepts for solving ''the Expression Problem''.
January 09, 2013, at 02:21 PM by lukstafi - lecture 11 topic
Changed line 45 from:
# [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists. [5 hours]
to:
# [[Attach:functional-lecture06.pdf | Lecture 6: Generic functions, Lists.]] Generic programming with mapping and folding. Backtracking with lists. [5 hours]
Changed line 48 from:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Lazy evaluation and stream processing. [3 hours]
to:
# [[Attach:functional-lecture07.pdf | Lecture 7: Laziness and Streams.]] Lazy evaluation and stream processing. [3 hours]
Changed line 51 from:
# [[#curlecture]] [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads. [4-5 hours]
to:
# [[#curlecture]] [[Attach:functional-lecture08.pdf | Lecture 8: Monads.]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads. [4-5 hours]
Changed line 60 from:
# [[Attach:functional-lecture09.pdf | Lecture 9:]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
to:
# [[Attach:functional-lecture09.pdf | Lecture 9: Compilation and Parsing.]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
Changed lines 62-64 from:
# Zippers. Functional Reactive Programming.
# Overview of various type system concepts (selected from: phantom types, GADTs, structural subtyping, type classes, module system).
to:
** [[Attach:functional-lecture09exs.pdf | Exercises]].
** [[http://ocaml.org/tutorials/performance_and_profiling.html | Reading the generated assembly]] -- compiling with @@ocamlopt -S@@.
# [[Attach:functional-lecture10.pdf | Lecture 10: FRP.]] Zippers. Functional Reactive Programming.
# [[Attach:functional-lecture11.pdf | Lecture 11: the Expression Problem.]] Comparison of object-oriented and function-oriented program organisation. Type system concepts for solving ''the Expression Problem''
.
Changed line 60 from:
# [[Attach:functional-lecture09.pdf | Lecture 9:]] Working with OCaml projects. Compiling FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
to:
# [[Attach:functional-lecture09.pdf | Lecture 9:]] Working with OCaml projects. Compiling and runtime of FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
December 29, 2012, at 11:39 PM by lukstafi - lecture 9
Changed lines 60-61 from:
# [[Attach:functional-lecture09.pdf | Lecture 9:]] Compilation. Birds-eye view of compiling into assembly. Interactive toplevel and the build system of OCaml. Writing parsers in Menhir.
to:
# [[Attach:functional-lecture09.pdf | Lecture 9:]] Working with OCaml projects. Compiling FPLs: Garbage Collection and closures. Optimization. Writing parsers in Menhir.
** Examples: [[Attach:Lec9.zip]]
.
Changed line 48 from:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Lazy evaluation and stream processing. [2-3 hours]
to:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Lazy evaluation and stream processing. [3 hours]
Changed line 51 from:
# [[#curlecture]] [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads.
to:
# [[#curlecture]] [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads. [4-5 hours]
Changed line 59 from:
*** [[Attach:pa_monad312.cmo]], [[Attach:pa_monad400.cmo]].
to:
*** [[Attach:pa_monad312.zip]], [[Attach:pa_monad400.zip]].
Changed line 48 from:
# [[#curlecture]] [[Attach:functional-lecture07.pdf | Lecture 7:]] Lazy evaluation and stream processing. [2-3 hours]
to:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Lazy evaluation and stream processing. [2-3 hours]
Changed line 51 from:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight threads.
to:
# [[#curlecture]] [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight cooperative threads.
Changed line 51 from:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. Probabilistic Programming. Lightweight threads.
to:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. The module system. Probabilistic Programming. Lightweight threads.
Changed line 61 from:
# Functional Reactive Programming.
to:
# Zippers. Functional Reactive Programming.
Changed line 59 from:
*** [[Attach:pa_monad312.cmo]], [[[[Attach:pa_monad400.cmo]].
to:
*** [[Attach:pa_monad312.cmo]], [[Attach:pa_monad400.cmo]].
December 16, 2012, at 06:44 PM by lukstafi - Wadler, monad syntax
Changed lines 22-23 from:
to:
* [[http://www.youtube.com/playlist?list=PLey3KIETJDP-6dIBWfFWjKkz4AC88qN7t | Introduction to Functional Programming]] by Philip Wadler, in Haskell. (at Edinburgh)
Added lines 57-59:
** Tutorial [[http://lambda.jimpryor.net/state_monad_tutorial/ | on the state monad]] and on [[http://lambda.jimpryor.net/monad_transformers/ | monad transformers]].
** [[http://www.cas.mcmaster.ca/~carette/pa_monad/ | Monad syntax extension]]
*** [[Attach:pa_monad312.cmo]], [[[[Attach:pa_monad400.cmo]].
Changed line 54 from:
** Teaser for [[http://www.youtube.com/watch?v=fclvsoaUI-U#t=40m52s | Probabilistic Programming paradigm]] -- from cognitive science point of view.
to:
** Teaser for [[http://www.youtube.com/watch?v=fclvsoaUI-U#t=40m52s | Probabilistic Programming paradigm]] -- from cognitive science perspective.
Added line 55:
*** For even more, see [[http://probabilistic-programming.org/wiki/Home | probabilistic-programming]] and [[http://okmij.org/ftp/kakuritu/ | HANSEI]] OCaml library.
Changed line 54 from:
** Teaser for [[http://www.youtube.com/watch?v=fclvsoaUI-U | Probabilistic Programming paradigm]] -- from cognitive science point of view.
to:
** Teaser for [[http://www.youtube.com/watch?v=fclvsoaUI-U#t=40m52s | Probabilistic Programming paradigm]] -- from cognitive science point of view.
December 10, 2012, at 06:23 PM by lukstafi - Lecture 8 links.
Changed line 44 from:
# [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists. [4-5 hours]
to:
# [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists. [5 hours]
Changed lines 50-54 from:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
to:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. Probabilistic Programming. Lightweight threads.
** I planned to cover computational expresions from F#, but... in next edition of the course perhaps.
** Examples: [[Attach:Lec8.ml]], incomplete: [[Attach:Lec8.fs]].
** [[Attach:functional-lecture08exs.pdf | Exercises]].
** Teaser for [[http://www.youtube.com/watch?v=fclvsoaUI-U | Probabilistic Programming paradigm]] -- from cognitive science point of view.
Changed line 44 from:
# [[#curlecture]] [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists. [4-5 hours]
to:
# [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists. [4-5 hours]
Changed line 47 from:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Lazy evaluation and stream processing. [2-3 hours]
to:
# [[#curlecture]] [[Attach:functional-lecture07.pdf | Lecture 7:]] Lazy evaluation and stream processing. [2-3 hours]
Changed line 44 from:
# [[#curlecture]] [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists. [5 hours]
to:
# [[#curlecture]] [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists. [4-5 hours]
Changed line 47 from:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Laziness. Perhaps a bit about continuations and @@yield@@. [1 hour]
to:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Lazy evaluation and stream processing. [2-3 hours]
Deleted lines 97-105:

!! Rants

Initially I planned to always use OCaml with [[http://batteries.forge.ocamlcore.org/ | OCaml Batteries Included]] and its (generalized) list comprehension syntax extension. But I resigned for several reasons:
# ''Batteries'' is not inherently functional.
** I would need to explain its @@enum@@ type to even use list comprehension.
** It's OK for OCaml programming, but doesn't fit a functional programming course.
# A glitch with syntax used in system responses.
# Not available out-of-the-box with the Windows OCaml installer.
November 26, 2012, at 12:07 AM by lukstafi - lecture 7 lazy eval
Changed lines 23-24 from:
!! Lectures and assigned material:
# [[Attach:functional-lecture01.pdf | Lecture 1: Logic]] (and Types)
.
to:
!! Lectures and assigned material

The time given is how many lecture-hours a lecture actually took us, for reference: don't be scared that lecture 6 appears as a single lecture
. One meeting is two lecture-hours.

# [[Attach:functional-lecture01.pdf | Lecture 1: Logic]] (and Types). [2 hours]
Changed line 30 from:
# [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) (needs some fixes) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]].
to:
# [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) (needs some fixes) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]]. [2 hours]
Changed line 33 from:
# [[Attach:functional-lecture03.pdf | Lecture 3: Computation]].
to:
# [[Attach:functional-lecture03.pdf | Lecture 3: Computation]]. [2 hours]
Changed line 36 from:
# [[Attach:functional-lecture04.pdf | Lecture 4: Functions]] (and Lambda Calculus). Also known as [[http://worrydream.com/AlligatorEggs/ | Alligator Calculus]]. (Lecture requires OCaml.)
to:
# [[Attach:functional-lecture04.pdf | Lecture 4: Functions]] (and Lambda Calculus). Also known as [[http://worrydream.com/AlligatorEggs/ | Alligator Calculus]]. (Lecture requires OCaml.) [3 hours]
Changed line 39 from:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Polymorphic recursion. Algebraic specifications. Maps. Red-black trees.
to:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Polymorphic recursion. Algebraic specifications. Maps. Red-black trees. [3 hours]
Changed line 44 from:
# [[#curlecture]] [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists.
to:
# [[#curlecture]] [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists. [5 hours]
Changed lines 47-49 from:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Laziness. Perhaps a bit about continuations and @@yield@@.
to:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Laziness. Perhaps a bit about continuations and @@yield@@. [1 hour]
** Examples: [[Attach:Lec7.ml]], incomplete: [[Attach:Lec7.fs]].
** [[Attach:functional-lecture07exs.pdf | Exercises]]
.
November 20, 2012, at 08:24 AM by lukstafi - compilation lecture update
Added line 43:
** [[Attach:functional-lecture06exs.pdf | Exercises]].
Changed lines 45-46 from:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] Compilation. A foray into compiling a functional programming language. (Birds-eye view of compiling into assembly.)
# [[Attach:functional
-lecture09.pdf | Lecture 9:]] List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
to:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
# [[Attach:functional
-lecture09.pdf | Lecture 9:]] Compilation. Birds-eye view of compiling into assembly. Interactive toplevel and the build system of OCaml. Writing parsers in Menhir.
Changed line 27 from:
# [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]].
to:
# [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) (needs some fixes) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]].
November 15, 2012, at 11:51 PM by lukstafi - lec 6 examples
Changed line 36 from:
# [[#curlecture]] [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Polymorphic recursion. Algebraic specifications. Maps. Red-black trees.
to:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Polymorphic recursion. Algebraic specifications. Maps. Red-black trees.
Changed line 39 from:
** Examples: [[Attach:Lec5.ml]], [[Attach:Lec5.fs]], [[Attach:Lec5.fsi]].
to:
** Examples: [[Attach:Lec5.ml]], a bit incomplete: [[Attach:Lec5.fs]], [[Attach:Lec5.fsi]].
Changed lines 41-42 from:
# [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists.
to:
# [[#curlecture]] [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists.
** Examples: [[Attach:Lec6.ml]], incomplete: [[Attach:Lec6.fs]]
.
November 15, 2012, at 01:37 PM by lukstafi - video lectures
Added lines 18-22:
Functional programming video lectures:
* [[http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1 | Functional Programming Fundamentals]] in Haskell, by Erik Meijer, based on [[http://www.cs.nott.ac.uk/~gmh/book.html | Programming in Haskell]] by Graham Hutton. (at Channel 9)
* [[http://channel9.msdn.com/Tags/ralf-laemmel | Functional Programming with Ralf Laemmel]], more advanced topics, in Haskell. (at Channel 9)
* [[https://www.coursera.org/course/progfun | Functional Programming Principles in Scala]] by Martin Odersky. (at Coursera)

Changed line 5 from:
Useful links:
to:
!! Useful links:
Changed lines 16-17 from:
to:
* [[http://blogs.msdn.com/b/dsyme/archive/2008/09/01/the-f-operators-and-basic-functions.aspx | F# operators and basic functions]]
Changed lines 87-88 from:
!! Links and stuff
to:
!! Rants
Deleted lines 94-96:

Some interesting links:
* [[http://blogs.msdn.com/b/dsyme/archive/2008/09/01/the-f-operators-and-basic-functions.aspx | F# operators and basic functions]]
Added line 39:
# Functional Reactive Programming.
November 05, 2012, at 09:29 AM by lukstafi - links
Added lines 1-2:
[[ #curlecture | Jump to the current lecture]]
Changed lines 5-7 from:
A community site for OCaml: [[http://www.ocaml-lang.org/index.html | The OCaml Programming Language]].
* I recommend [[http://www.ocaml-lang.org/tutorials/ | OCaml comprehensive tutorial]]
* In particular, [[http://www.ocaml-lang.org/tutorials/99problems.html | practice!]]
to:
Useful links:
* A community site for
OCaml: [[http://www.ocaml-lang.org/index.html | The OCaml Programming Language]].
** I recommend [[http://www.ocaml-lang.org/tutorials/ | OCaml comprehensive tutorial]]
** In particular, [[http://www.ocaml-lang.org/tutorials/99problems.html | practice!]]
Changed lines 13-16 from:
to:
* [[http://caml.inria.fr/pub/docs/manual-ocaml/ | OCaml manual]]
* [[http://thelema.github.com/batteries-included/hdoc/index.html | OCaml Batteries API]]
* [[http://search.ocaml.jp/ | OCaml API search]] only standard library and ExtLib (an old precursor of Batteries)

Changed line 30 from:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Polymorphic recursion. Algebraic specifications. Maps. Red-black trees.
to:
# [[#curlecture]] [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Polymorphic recursion. Algebraic specifications. Maps. Red-black trees.
Changed line 28 from:
*** New -- parametric polymorphism examples, only in [[Attach:Lec5.ml | OCaml]].
to:
*** polymorphic recursion examples only in [[Attach:Lec5.ml | OCaml]].
November 02, 2012, at 02:34 AM by lukstafi - Red-Black deletion
Changed lines 24-25 from:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Algebraic specifications. Maps. Red-black (and perhaps AVL) trees.
to:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Polymorphic recursion. Algebraic specifications. Maps. Red-black trees.
** [[Attach:functional-lecture05-red_black_del.pdf | Red-Black trees with deletion]] by Matt Might
.
Added line 27:
*** New -- parametric polymorphism examples, only in [[Attach:Lec5.ml | OCaml]].
Changed line 28 from:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Laziness.
to:
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Laziness. Perhaps a bit about continuations and @@yield@@.
October 31, 2012, at 06:54 PM by lukstafi - lecture 5 exs
Added line 25:
** [[Attach:functional-lecture05exs.pdf | Exercises]] (same as on slides plus unification algorithm).
Changed lines 30-31 from:
# Overview of various type system concepts (selected from: phantom types, GADTs, structural subtyping, type classes, functors, first-class modules).
to:
# Overview of various type system concepts (selected from: phantom types, GADTs, structural subtyping, type classes, module system).
October 24, 2012, at 01:22 AM by lukstafi - future lectures ideas
Changed lines 28-30 from:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
# ''Very'' [[Attach:functional-exam.pdf | simple exam]]
.
to:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] Compilation. A foray into compiling a functional programming language. (Birds-eye view of compiling into assembly.)
# [[Attach:functional-lecture09.pdf | Lecture 9:]] List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
# Overview of various type system concepts (selected from: phantom types, GADTs, structural subtyping, type classes, functors, first-class modules)
.
Added line 23:
** [[Attach:functional-lecture04exs.pdf | Exercises]] (same as on slides minus one).
Deleted line 25:
** [[Attach:functional-lecture04exs.pdf | Exercises]] (same as on slides minus one).
October 23, 2012, at 08:03 PM by lukstafi - list 4
Added line 25:
** [[Attach:functional-lecture04exs.pdf | Exercises]] (same as on slides minus one).
Changed lines 6-7 from:
* To follow-up on OCaml programming, try [[http://caml.inria.fr/pub/docs/oreilly-book/ | Developing Applications with OCaml]]; this course focuses on functional programming intuitions rather than the wider practice of programming.
to:
* Our course focuses on functional programming intuitions rather than the wider practice of programming. But:
** To follow-up on OCaml programming, try [[http://caml.inria.fr/pub/docs/oreilly-book/ | Developing Applications with OCaml]].
Changed lines 8-9 from:
** You can arrange to score bonus points for implementing a project in OCaml (unrelated to course assignments), but you would have to report on your progress systematically.
to:
** You can arrange to score bonus points for implementing a project, unrelated to course assignments, in OCaml, F# (if the code is not too C#-like) or Haskell, but you would have to report on your progress systematically.
October 22, 2012, at 07:12 PM by lukstafi - books
Changed lines 6-9 from:
to:
* To follow-up on OCaml programming, try [[http://caml.inria.fr/pub/docs/oreilly-book/ | Developing Applications with OCaml]]; this course focuses on functional programming intuitions rather than the wider practice of programming.
** Or try [[http://ocamlunix.forge.ocamlcore.org/index.html | Unix system programming in OCaml]].
** You can arrange to score bonus points for implementing a project in OCaml (unrelated to course assignments), but you would have to report on your progress systematically.

Changed line 27 from:
* [[http://try.ocamlpro.com/ | Tutorial OCaml toplevel]] running on client-side in JavaScript (compiled from OCaml sources by '''js_of_ocaml''').
to:
* [[http://try.ocamlpro.com/ | Tutorial OCaml toplevel]] running on client-side in JavaScript (compiled from OCaml bytecode by '''js_of_ocaml''').
October 20, 2012, at 11:19 AM by lukstafi - tutorial
Changed lines 3-4 from:
New: A community site for OCaml: [[http://www.ocaml-lang.org/index.html | The OCaml Programming Language]].
to:
A community site for OCaml: [[http://www.ocaml-lang.org/index.html | The OCaml Programming Language]].
* I recommend [[http://www.ocaml-lang.org/tutorials/ | OCaml comprehensive tutorial]]
* In particular, [[http://www.ocaml-lang.org/tutorials/99problems.html | practice!]]

Changed line 24 from:
!! Working online:
to:
!! Working in the browser:
Changed line 24 from:
!! Using online:
to:
!! Working online:
Changed line 5 from:
! Lectures and assigned material:
to:
!! Lectures and assigned material:
Changed line 24 from:
! Using online:
to:
!! Using online:
Changed line 30 from:
! Installing on Windows:
to:
!! Installing on Windows:
Changed line 42 from:
Installing on Debian-derived systems (e.g. Ubuntu):
to:
!! Installing on Debian-derived systems (e.g. Ubuntu):
Added lines 68-69:
!! Links and stuff
October 15, 2012, at 05:24 PM by lukstafi - using ocaml
Changed line 5 from:
Lectures and assigned material:
to:
! Lectures and assigned material:
Changed lines 24-25 from:
Installing on Windows:
* OCaml: [[http://protz.github.com/ocaml-installer/ | OCaml Installer]]
to:
! Using online:
* [[http://try.ocamlpro.com/ | Tutorial OCaml toplevel]] running on client-side in JavaScript (compiled from OCaml sources by '''js_of_ocaml''').
* [[http://ocsigen.org/js_of_ocaml/files/toplevel/index.html | OCaml toplevel]] with the same @@js_of_ocaml@@-based engine.
* [[http://ocamljava.x9c.fr/toplevel/toplevel.html | OCaml toplevel]] running on client-side in Java plugin (compiled from OCaml sources by '''ocamljava''').
* [[http://codepad.org/]] online compiler/interpreter for several languages, running on server-side.

! Installing on Windows:
* OCaml student-friendly
: [[http://protz.github.com/ocaml-installer/ | OCaml Installer]]
Added line 37:
* OCaml developer-friendly: [[http://wodi.forge.ocamlcore.org/ | Wodi]] (based on [[http://godi.camlcity.org/godi/index.html | GODI]])
October 15, 2012, at 04:48 PM by lukstafi - lec 3 exs
Changed lines 14-17 from:
# Practice week. In addition to exercises at the end of last lecture, write two sorting algorithms, working on lists: merge sort and quicksort.
** Merge sort splits the list roughly in half, sorts the parts, and merges the sorted parts into the sorted result.
** Quicksort splits the list into elements smaller/greater than the first element, sorts the parts, and puts them together.
** Exercises that don't get done in the class become homework
.
to:
** [[Attach:functional-lecture03exs.pdf | Exercises]] (same as on slides plus one more).
October 08, 2012, at 01:50 AM by lukstafi - Lecture 2 exercises
Added line 11:
** [[Attach:functional-lecture02exs.pdf | Exercises]], [[Attach:Lec2exs.ml]].
Changed line 48 from:
** Download [[http://fsxplat.codeplex.com/releases/view/55463#DownloadId=166083]] (this is just one possibility...)
to:
** Download [[http://fsxplat.codeplex.com/downloads/get/166083 | fsharp2.0-1all.deb]] (this is just one possibility...)
Changed line 7 from:
** Examples: [[Attach:Lec2.ml]], [[Attach:Lec2.fs]].
to:
** Examples: [[Attach:Lec1.ml]], [[Attach:Lec1.fs]].
October 01, 2012, at 07:48 PM by lukstafi - mono libs
Changed line 47 from:
** @@$ sudo apt-get install mono-devel@@
to:
** @@$ sudo apt-get install mono-devel mono-tools-devel libmono-winforms2.0-cil libmono-system-runtime2.0-cil@@
October 01, 2012, at 07:47 PM by lukstafi - fsharp-mode
Changed lines 1-2 from:
The course will be taught in [[http://caml.inria.fr/ | OCaml]], and [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]]. Most of the exercise solutions should be straightforward to translate between OCaml and F#.
to:
The course will be taught in [[http://caml.inria.fr/ | OCaml]], with translations to [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]]. Most of the exercise solutions should be straightforward to translate between OCaml and F#.
Deleted lines 6-7:
** Do lessons 1-4 of the tutorial at [[http://try.ocamlpro.com/]]. Do parts "Quick Language Overview" and "The Functional World" of the tutorial at [[http://www.tryfsharp.org/]]. Skip over the parts that you do not understand or that are too time-consuming. You should finish the tutorials before lecture 3. Unfortunately the F# tutorial wouldn't work for me under Linux, but it works under Windows.
# [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]].
Added lines 8-10:
** For further practice, you can do lessons 1-4 of the tutorial at [[http://try.ocamlpro.com/]], and parts "Quick Language Overview" and "The Functional World" of the tutorial at [[http://www.tryfsharp.org/]]. Skip over the parts that you do not understand or that are too time-consuming. Unfortunately the F# tutorial wouldn't work for me under Linux, but it works under Windows.
# [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]].
** Examples: [[Attach:Lec2.ml]], [[Attach:Lec2.fs]].
Changed lines 61-62 from:
to:
** I use Emacs with @@fsharp-mode@@, download from [[http://sourceforge.net/projects/fsharp-mode/]] and follow instructions in the @@README@@ file.
Changed line 22 from:
# [[Attach:functional-lecture07.pdf | Lecture 8:]] List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
to:
# [[Attach:functional-lecture08.pdf | Lecture 8:]] List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
Changed line 22 from:
# Lecture 8: List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
to:
# [[Attach:functional-lecture07.pdf | Lecture 8:]] List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
June 08, 2012, at 09:43 PM by lukstafi - exam
Changed lines 23-24 from:
to:
# ''Very'' [[Attach:functional-exam.pdf | simple exam]].
Changed line 5 from:
Lectures and assigned material (the plan after the divide is tentative):
to:
Lectures and assigned material:
May 28, 2012, at 08:01 AM by lukstafi - prepare attach
Changed lines 20-24 from:
# Lecture 6: Generic programming with mapping and folding. List comprehensions. Backtracking with lists. (Lecture probably in F#.)

*
Lecture 7: Laziness.
* Lecture 8: Other Monads. (Lecture partly in F#.)
to:
# [[Attach:functional-lecture06.pdf | Lecture 6:]] Generic programming with mapping and folding. Backtracking with lists.
# [[Attach:functional-lecture07.pdf | Lecture 7:]] Laziness.
# Lecture 8: List comprehensions. Monads. Computation expressions. (Lecture partly in F#.)
Changed line 19 from:
** Examples: [[Attach:Lec5.ml]], [[Attach:Lec5.fs]].
to:
** Examples: [[Attach:Lec5.ml]], [[Attach:Lec5.fs]], [[Attach:Lec5.fsi]].
April 21, 2012, at 05:13 PM by lukstafi - sources
Added line 9:
** Examples: [[Attach:Lec2.ml]], [[Attach:Lec2.fs]].
Changed line 11 from:
** Examples: [[Attach:Lec3.ml]].
to:
** Examples: [[Attach:Lec3.ml]], [[Attach:Lec3.fs]].
Added line 19:
** Examples: [[Attach:Lec5.ml]], [[Attach:Lec5.fs]].
April 13, 2012, at 04:14 AM by lukstafi - lecture 5
Changed lines 17-19 from:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]] (currently just a rough "table of contents"). Type inference. Algebraic specifications. Maps. AVL trees.
# Lecture 6: Generic programming with maps and folds
. List comprehensions. Backtracking with lists. (Lecture probably in F#...)
to:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]]. Type inference. Algebraic specifications. Maps. Red-black (and perhaps AVL) trees.
# Lecture 6: Generic programming with mapping and folding. List comprehensions. Backtracking with lists. (Lecture probably in F#.)
April 12, 2012, at 04:08 AM by lukstafi - lecture 6 plan
Changed lines 18-19 from:

* Lecture 6: Lists. (Lecture in F#.)
to:
# Lecture 6: Generic programming with maps and folds. List comprehensions. Backtracking with lists. (Lecture probably in F#...)
March 31, 2012, at 04:34 AM by lukstafi - lecture 5
Changed lines 17-18 from:
# Lecture 5: Polymorphism. Abstract Data Types.
to:
# [[Attach:functional-lecture05.pdf | Lecture 5: Polymorphism and Abstract Data Types]] (currently just a rough "table of contents"). Type inference. Algebraic specifications. Maps. AVL trees.
March 11, 2012, at 04:26 PM by lukstafi - lec4
Changed lines 9-10 from:
# [[Attach:functional-lecture03.pdf | Lecture 3: Computation]]. Examples: [[Attach:Lec3.ml]].
to:
# [[Attach:functional-lecture03.pdf | Lecture 3: Computation]].
**
Examples: [[Attach:Lec3.ml]].
Changed lines 15-16 from:
# Lecture 4: Functions (and Lambda Calculus). Also known as [[http://worrydream.com/AlligatorEggs/ | Alligator Calculus]]. (Lecture requires OCaml.)
to:
# [[Attach:functional-lecture04.pdf | Lecture 4: Functions]] (and Lambda Calculus). Also known as [[http://worrydream.com/AlligatorEggs/ | Alligator Calculus]]. (Lecture requires OCaml.)
** Examples: [[Attach:Lec4.ml]].
March 07, 2012, at 10:20 PM by lukstafi - ocaml site
Added lines 3-4:
New: A community site for OCaml: [[http://www.ocaml-lang.org/index.html | The OCaml Programming Language]].
Changed line 12 from:
# Lecture 4: Functions (and Lambda Calculus). Also known as [[http://worrydream.com/AlligatorEggs/ | Alligator Calculus]] (Lecture requires OCaml.)
to:
# Lecture 4: Functions (and Lambda Calculus). Also known as [[http://worrydream.com/AlligatorEggs/ | Alligator Calculus]]. (Lecture requires OCaml.)
February 26, 2012, at 09:46 PM by lukstafi - alligators
Changed line 12 from:
# Lecture 4: Functions (and Lambda Calculus). (Lecture requires OCaml.)
to:
# Lecture 4: Functions (and Lambda Calculus). Also known as [[http://worrydream.com/AlligatorEggs/ | Alligator Calculus]] (Lecture requires OCaml.)
February 23, 2012, at 05:11 PM by lukstafi - layout
Changed lines 4-8 from:
* [[Attach:functional-lecture01.pdf | Lecture 1: Logic]] (and Types).
* Do lessons 1-4 of the tutorial at [[http://try.ocamlpro.com/]]. Do parts "Quick Language Overview" and "The Functional World" of the tutorial at [[http://www.tryfsharp.org/]]. Skip over the parts that you do not understand or that are too time-consuming. You should finish the tutorials before lecture 3. Unfortunately the F# tutorial wouldn't work for me under Linux, but it works under Windows.
* [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]].
* [[Attach:functional-lecture03.pdf | Lecture 3: Computation]]. Examples: [[Attach:Lec3.ml]].
* Practice week. In addition to exercises at the end of last lecture, write two sorting algorithms, working on lists: merge sort and quicksort.
to:
# [[Attach:functional-lecture01.pdf | Lecture 1: Logic]] (and Types).
** Do lessons 1-4 of the tutorial at [[http://try.ocamlpro.com/]]. Do parts "Quick Language Overview" and "The Functional World" of the tutorial at [[http://www.tryfsharp.org/]]. Skip over the parts that you do not understand or that are too time-consuming. You should finish the tutorials before lecture 3. Unfortunately the F# tutorial wouldn't work for me under Linux, but it works under Windows.
# [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]].
# [[Attach:functional-lecture03.pdf | Lecture 3: Computation]]. Examples: [[Attach:Lec3.ml]].
# Practice week. In addition to exercises at the end of last lecture, write two sorting algorithms, working on lists: merge sort and quicksort.
Changed lines 12-14 from:
* Lecture 4: Functions (and Lambda Calculus). (Lecture requires OCaml.)
* Lecture 5: Polymorphism. Abstract Data Types.
to:
# Lecture 4: Functions (and Lambda Calculus). (Lecture requires OCaml.)
# Lecture 5: Polymorphism. Abstract Data Types.
February 23, 2012, at 12:28 PM by lukstafi - practice
Added lines 8-11:
* Practice week. In addition to exercises at the end of last lecture, write two sorting algorithms, working on lists: merge sort and quicksort.
** Merge sort splits the list roughly in half, sorts the parts, and merges the sorted parts into the sorted result.
** Quicksort splits the list into elements smaller/greater than the first element, sorts the parts, and puts them together.
** Exercises that don't get done in the class become homework.
Changed lines 13-14 from:

* Lecture 5: Polymorphism.
to:
* Lecture 5: Polymorphism. Abstract Data Types.
Changed line 7 from:
* [[Attach:functional-lecture03.pdf | Lecture 3: Computation]]. Source: [[Attach:Lec3.ml]].
to:
* [[Attach:functional-lecture03.pdf | Lecture 3: Computation]]. Examples: [[Attach:Lec3.ml]].
February 19, 2012, at 02:51 PM by lukstafi - lecture 3 attachments
Changed line 7 from:
* Lecture 3: Computation.
to:
* [[Attach:functional-lecture03.pdf | Lecture 3: Computation]]. Source: [[Attach:Lec3.ml]].
February 19, 2012, at 12:54 PM by lukstafi - minor install
Changed lines 21-24 from:
** Because ''OCaml Batteries Included'' will not get installed, I'll put "standard" ''Batteries'' functions in the following file. For code that relies on ''Batteries'' more, it will be easier for us to use Linux.
***
[[Attach:common.ml]]
*** You can save it as @@.ocamlinit@@ in @@$HOME@@ directory or in the directory where you start the interactive mode.
*** Or just @@# #use "common.ml";;@@ in the toplevel
.
to:
** Save [[Attach:common.ml]] as @@.ocamlinit@@ in a directory which OCaml will recognize (either "home" or where you start OCaml); or just @@# #use "path\to\common.ml";;@@ in the toplevel (where @@path\to@@ is the directory in which you saved [[Attach:common.ml]]).
February 19, 2012, at 12:49 PM by lukstafi - dropping batteries
Changed lines 1-2 from:
The course will be taught in [[http://caml.inria.fr/ | OCaml]] together with [[http://batteries.forge.ocamlcore.org/ | OCaml Batteries Included]], and [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]]. Most of the exercise solutions should be straightforward to translate between OCaml and F#.
to:
The course will be taught in [[http://caml.inria.fr/ | OCaml]], and [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]]. Most of the exercise solutions should be straightforward to translate between OCaml and F#.
Changed lines 33-34 from:
** @@$ sudo apt-get install ocaml-batteries-included@@
** Save
[[Attach:ocamlinit.ml]] as @@.ocamlinit@@ in your home directory, for ''OCaml Batteries Included'' to start automatically in the toplevel.
to:
** We do not need ''Batteries'', so instead, save [[Attach:common.ml]] as @@.ocamlinit@@ in your home directory.
*** But if you really want ''Batteries'', do: @@$ sudo apt-get install ocaml-batteries-included@@
*** and save
[[Attach:ocamlinit.ml]] as @@.ocamlinit@@ in your home directory, for ''OCaml Batteries Included'' to start automatically in the toplevel.
Added lines 54-60:
Initially I planned to always use OCaml with [[http://batteries.forge.ocamlcore.org/ | OCaml Batteries Included]] and its (generalized) list comprehension syntax extension. But I resigned for several reasons:
# ''Batteries'' is not inherently functional.
** I would need to explain its @@enum@@ type to even use list comprehension.
** It's OK for OCaml programming, but doesn't fit a functional programming course.
# A glitch with syntax used in system responses.
# Not available out-of-the-box with the Windows OCaml installer.

February 19, 2012, at 12:25 AM by lukstafi - installation common.ml
Changed line 21 from:
** Because ''OCaml Batteries Included'' will not get installed, I'll put some ''Batteries'' functions in the following file, but only simple ones. For code that relies on ''Batteries'' more, it will be easier for us to use Linux.
to:
** Because ''OCaml Batteries Included'' will not get installed, I'll put "standard" ''Batteries'' functions in the following file. For code that relies on ''Batteries'' more, it will be easier for us to use Linux.
Changed line 53 from:
Some random links:
to:
Some interesting links:
Added line 43:
*** @@$ sudo apt-get purge fsharp@@
February 19, 2012, at 12:08 AM by lukstafi - installation even more details
Added lines 17-20:
** The installer will also install Emacs. We will have several ways to use OCaml:
*** using the graphical toplevel @@OCamlWin.exe@@,
*** using any editor, e.g. @@OCamlBrowser@@, copying to the toplevel @@ocaml.exe@@ and using the compiler @@ocamlc.exe@@,
*** using Emacs as we do under Linux.
Added line 32:
** @@$ sudo apt-get install tcl8.5-dev tk8.5-dev@@ (as suggested)
February 18, 2012, at 11:56 PM by lukstafi - installation more details
Changed lines 1-2 from:
The course will be taught in [[http://caml.inria.fr/ | OCaml]] initially, later a couple of lectures will be in [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]]. Most of the exercise solutions should be straightforward to translate between OCaml or F#.
to:
The course will be taught in [[http://caml.inria.fr/ | OCaml]] together with [[http://batteries.forge.ocamlcore.org/ | OCaml Batteries Included]], and [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]]. Most of the exercise solutions should be straightforward to translate between OCaml and F#.
Changed lines 33-34 from:
** This is just one possibility...
** Download [[http://fsxplat.codeplex.com/releases/view/55463#DownloadId=166083]]
to:
** @@$ sudo apt-get install mono-devel@@
** Download [[http://fsxplat.codeplex.com/releases/view/55463#DownloadId=166083]] (this is just one possibility...)
Changed lines 37-46 from:
to:
** If the toplevel fails, we try to install from sources:
*** @@$ git clone https://github.com/fsharp/fsharp.git@@
*** @@$ cd fsharp@@
*** @@$ autoreconf@@
*** @@$ ./configure --prefix=/usr@@
*** @@$ make@@
*** @@$ sudo make install@@
*** @@$ fsharpi@@
**** (thanks to instructions at [[http://log.kevincantu.org/2011/09/f-on-ubuntu-oneiric-building-f-from.html | F# on Ubuntu 11.10]])

February 18, 2012, at 11:24 PM by lukstafi - installation details
Changed lines 18-20 from:
*** [[Attach:common.ml]] (You can save it as @@.ocamlinit@@ in @@$HOME@@ directory or in the directory where you start the interactive mode.)
to:
*** [[Attach:common.ml]]
*** You can save it as @@.ocamlinit@@ in @@$HOME@@ directory or in the directory where you start the interactive mode.
*** Or just @@# #use "common.ml";;@@ in the toplevel.
Added line 22:
** [[http://www.microsoft.com/download/en/details.aspx?id=11100 | InstallFSharp.msi on the page linked]]
Added line 24:
Added lines 27-31:
** @@$ sudo apt-get install ocaml@@
** @@$ sudo apt-get install ocaml-batteries-included@@
** Save [[Attach:ocamlinit.ml]] as @@.ocamlinit@@ in your home directory, for ''OCaml Batteries Included'' to start automatically in the toplevel.
** @@$ ocaml@@ starts the toplevel.
** Instal other tools and libraries as needed, in similar manner.
Changed lines 36-37 from:
to:
** @@$ fsharpi@@ starts the toplevel.
February 18, 2012, at 11:04 PM by lukstafi - install prelim
Added lines 16-18:
* OCaml: [[http://protz.github.com/ocaml-installer/ | OCaml Installer]]
** Because ''OCaml Batteries Included'' will not get installed, I'll put some ''Batteries'' functions in the following file, but only simple ones. For code that relies on ''Batteries'' more, it will be easier for us to use Linux.
*** [[Attach:common.ml]] (You can save it as @@.ocamlinit@@ in @@$HOME@@ directory or in the directory where you start the interactive mode.)
Changed lines 20-29 from:
* OCaml: [[http://protz.github.com/ocaml-installer/ | OCaml Installer]]
to:
** (Right now I have problems using ''Visual Studio'' :p but ''F# Console'' works just fine.)
Installing on Debian-derived systems (e.g. Ubuntu):
* OCaml:
* F#:
** This is just one possibility...
** Download [[http://fsxplat.codeplex.com/releases/view/55463#DownloadId=166083]]
** @@$ sudo dpkg -i fsharp2.0-1all.deb@@

Some random links:
* [[http://blogs.msdn.com/b/dsyme/archive/2008/09/01/the-f-operators-and-basic-functions.aspx | F# operators and basic functions
]]
February 18, 2012, at 06:14 PM by lukstafi - instal Windows
Added lines 14-17:

Installing on Windows:
* F#: [[http://msdn.microsoft.com/en-us/vstudio/hh388569 | Visual F#]]
* OCaml: [[http://protz.github.com/ocaml-installer/ | OCaml Installer]]
February 13, 2012, at 11:41 PM by lukstafi - lecture 2 fig
Changed line 6 from:
* [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types).
to:
* [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types) -- [[Attach:functional-lecture02typinf.pdf | Lecture 2 Figure]].
Changed line 6 from:
* [[Attach:functional-lecture01.pdf | Lecture 2: Algebra]] (and Algebraic Data Types).
to:
* [[Attach:functional-lecture02.pdf | Lecture 2: Algebra]] (and Algebraic Data Types).
February 13, 2012, at 12:05 PM by lukstafi - lecture link
Changed line 6 from:
* Lecture 2: Algebra (and Algebraic Data Types).
to:
* [[Attach:functional-lecture01.pdf | Lecture 2: Algebra]] (and Algebraic Data Types).
February 12, 2012, at 01:33 AM by lukstafi - tentative part
Changed line 3 from:
Lectures and assigned material (the part without linked material is tentative):
to:
Lectures and assigned material (the plan after the divide is tentative):
Added line 9:
February 12, 2012, at 01:27 AM by lukstafi - laziness
Changed lines 11-12 from:
* Lecture 7: Other Monads. (Lecture in F#.)
to:
* Lecture 7: Laziness.
* Lecture 8: Other Monads. (Lecture partly in F#.)
February 12, 2012, at 12:02 AM by lukstafi - there'll be monads
Changed lines 11-13 from:

Planned future lectures:
* Lecture: Monads. (Lecture in F#.)
to:
* Lecture 7: Other Monads. (Lecture in F#.)
February 09, 2012, at 12:39 AM by lukstafi - Restored Algebra lecture
Changed lines 6-10 from:
* Lecture 2: Computation.
* Lecture 3: Functions (and Lambda Calculus
). (Lecture requires OCaml.)
* Lecture 4: Polymorphism.
* Lecture 5:
Lists. (Lecture in F#.)
to:
* Lecture 2: Algebra (and Algebraic Data Types).
* Lecture 3: Computation.
* Lecture 4: Functions (and Lambda Calculus). (Lecture requires OCaml.)
* Lecture 5: Polymorphism.
* Lecture 6
: Lists. (Lecture in F#.)
February 08, 2012, at 06:43 PM by lukstafi - resigning from "algebra"
Changed line 4 from:
* [[Attach:functional-lecture01.pdf | Lecture 1: Logic and Types]].
to:
* [[Attach:functional-lecture01.pdf | Lecture 1: Logic]] (and Types).
Changed lines 6-13 from:
* Lecture 2.
** Part 1: Algebraic Data Types.
** Part 2: Computation, i.e. Evaluation.
** Part 3: Dissection of a first useful example.
* Lecture 3: Functions Everywhere (lambda calculus). (Lecture requires OCaml.)
* Lecture 4: Parametric Polymorphism.
* Lecture 5: Working with Lists. (Lecture in F#.)
* Lecture 6
: Monads. (Lecture in F#.)
to:
* Lecture 2: Computation.
* Lecture 3: Functions (and Lambda Calculus). (Lecture requires OCaml.)
* Lecture 4: Polymorphism
.
* Lecture 5: Lists. (Lecture in F#.)

Planned future lectures
:
* Lecture: Monads. (Lecture in F#.)
February 08, 2012, at 02:33 PM by lukstafi - lecture 2 parts
Changed lines 6-9 from:
* Lecture 2: Computation. (Evaluation rules. Dissection of a first useful example.)
to:
* Lecture 2.
** Part 1: Algebraic Data Types.
** Part 2: Computation, i.e. Evaluation.
** Part 3: Dissection of a first useful example.
February 07, 2012, at 05:25 PM by lukstafi - lecture annots
Changed line 3 from:
Lectures and assigned material:
to:
Lectures and assigned material (the part without linked material is tentative):
Changed line 7 from:
* Lecture 3: Functions Everywhere (lambda calculus).
to:
* Lecture 3: Functions Everywhere (lambda calculus). (Lecture requires OCaml.)
Added lines 9-10:
* Lecture 5: Working with Lists. (Lecture in F#.)
* Lecture 6: Monads. (Lecture in F#.)
February 07, 2012, at 02:43 PM by lukstafi - lecture 1 and tutorials
Added lines 1-8:
The course will be taught in [[http://caml.inria.fr/ | OCaml]] initially, later a couple of lectures will be in [[http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ | F#]]. Most of the exercise solutions should be straightforward to translate between OCaml or F#.

Lectures and assigned material:
* [[Attach:functional-lecture01.pdf | Lecture 1: Logic and Types]].
* Do lessons 1-4 of the tutorial at [[http://try.ocamlpro.com/]]. Do parts "Quick Language Overview" and "The Functional World" of the tutorial at [[http://www.tryfsharp.org/]]. Skip over the parts that you do not understand or that are too time-consuming. You should finish the tutorials before lecture 3. Unfortunately the F# tutorial wouldn't work for me under Linux, but it works under Windows.
* Lecture 2: Computation. (Evaluation rules. Dissection of a first useful example.)
* Lecture 3: Functions Everywhere (lambda calculus).
* Lecture 4: Parametric Polymorphism.
Edit · History · Print · Recent Changes · Search · Links
Page last modified on July 06, 2015, at 09:45 PM