Hi all. When I was playing with Haskell and reading stuff about it, I noticed that there is a lot of information in a form of research papers and a lot of mathematics involved. I must confess that I quite like this academic approach. Well, I thought that while I am still at university I could take some math classes to help me better understand these things and broaden my horizon. Any suggestion what could be relevant? I came up with: * Lambda calculus - the basis of functional languages * Category theory - where all these mysterious things like monads, arrows, and functors come from. * Topology (?) - don't know; I thought it is important rather in mathematical analysis (which I don't like much) but I have seen somewhere some references to it in context of CS. Any other suggestions? Thanks, Tom.
Tomas Caithaml wrote:
Any other suggestions?
Lattice theory. Actually just the part about "continuous partial orders" and "least fixed points" suffice. It is hard to find a math course on lattice theory that spends time on continuous partial orders; it is easier to find a CS course on denotational semantics, which covers the necessary math. I don't think topology is much needed for Haskell. Whatever little is needed manifests as lattice theory already. Topology has other uses in CS, but take note that topological spaces relevant to CS are seldom Hausdorff, whereas most math courses spend all the time on Hausdorff spaces.
Albert Y. C. Lai wrote:
Tomas Caithaml wrote:
Any other suggestions?
Lattice theory. Actually just the part about "continuous partial orders" and "least fixed points" suffice. It is hard to find a math course on lattice theory that spends time on continuous partial orders; it is easier to find a CS course on denotational semantics, which covers the necessary math.
I don't think topology is much needed for Haskell. Whatever little is needed manifests as lattice theory already. Topology has other uses in CS, but take note that topological spaces relevant to CS are seldom Hausdorff, whereas most math courses spend all the time on Hausdorff spaces. _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
Hi, The following ref might be helpful: M.H. Escardo. *Synthetic topology of data types and classical spaces*. ENTCS, Elsevier, volume 87, pages 21-156, November 2004. http://www.cs.bham.ac.uk/~mhe/papers/entcs87.pdf Best, J.
On 23/09/2007, Albert Y. C. Lai <trebla@vex.net> wrote:
Tomas Caithaml wrote:
Any other suggestions?
I don't think topology is much needed for Haskell. Whatever little is needed manifests as lattice theory already. Topology has other uses in CS, but take note that topological spaces relevant to CS are seldom Hausdorff, whereas most math courses spend all the time on Hausdorff spaces.
However, topology is one place to get good examples with which to build intuition for category theory, so it's possibly worth looking into from that perspective. There are lots of nice examples like the Seifert-van Kampen theorem, which can be eloquently summarised by saying that the fundamental groupoid functor preserves pushouts.
Mathematical logic would be a good thing to study if you haven't already, especially if you can take something as specific as intuitionistic / constructive / substructural logic. The Curry-Howard correspondence lurks underneath a lot of Haskell intuitions and techniques. -- Fritz On Sun 23 Sep 07, at 2:24 pm, Tomas Caithaml wrote:
Any suggestion what could be relevant? I came up with: * Lambda calculus - the basis of functional languages * Category theory - ... * Topology (?) - ...
fruehr:
Mathematical logic would be a good thing to study if you haven't already, especially if you can take something as specific as intuitionistic / constructive / substructural logic. The Curry-Howard correspondence lurks underneath a lot of Haskell intuitions and techniques.
-- Fritz
See also The Haskell Road to Logic, Maths and Programming http://www.cwi.nl/~jve/HR which might work the other direction. -- Don
On Sun, 2007-09-23 at 23:24 +0200, Tomas Caithaml wrote:
I came up with:
Just take the computer science courses that the fewest of your fellow students see any point to. More seriously - at my alma mater, the math-oriented computer science courses would be a better fit. My last one was on universal algebra, a lot of which was quite familiar from Haskell. (My Java-brainwashed class mates struggled more, I think) -k
On Sun, 2007-09-23 at 23:24 +0200, Tomas Caithaml wrote:
Hi all.
When I was playing with Haskell and reading stuff about it, I noticed that there is a lot of information in a form of research papers and a lot of mathematics involved. I must confess that I quite like this academic approach.
Well, I thought that while I am still at university I could take some math classes to help me better understand these things and broaden my horizon.
Any suggestion what could be relevant?
As a fellow student (fourth-year undergrad), I'm in a similar situation. The primary difference for me is that I'm a math major, so I've spent the last three years taking math courses and have only relatively recently developed an interest in Computer Science (and especially Haskell). I'd suggest just start taking the standard upper division coursework for math majors are your school. This probably includes abstract algebra (groups, rings, and so forth), linear algebra, real/complex analysis, and maybe some foundations courses like logic and set theory. It would be really difficult to try to approach something like category theory and topology rigorously without having a lot of basic mathematical fluency; you'll need the mathematical insight you gain from taking these basic courses to understand the higher level stuff, even if the concepts aren't directly related. Also, once you've taken these kinds of classes you'll be fluent enough in mathematics to understand the bigger picture of how most of the other math disciplines interrelate, and you'll be in a good position to figure out which disciplines are interesting to you, and which ones you'll need to study further to understand more about the disciplines that are of the most interest to you. -- Evan Klitzke <evan@yelp.com>
Tomas Caithaml wrote:
Hi all.
When I was playing with Haskell and reading stuff about it, I noticed that there is a lot of information in a form of research papers and a lot of mathematics involved. I must confess that I quite like this academic approach.
Well, I thought that while I am still at university I could take some math classes to help me better understand these things and broaden my horizon.
Any suggestion what could be relevant?
I came up with:
* Lambda calculus - the basis of functional languages
* Category theory - where all these mysterious things like monads, arrows, and functors come from.
* Topology (?) - don't know; I thought it is important rather in mathematical analysis (which I don't like much) but I have seen somewhere some references to it in context of CS.
Any other suggestions?
All the advice you got was good but I will add: never go after one thing in mathematics before you really know what you are doing. Topology is probably best intellectually but must be combined with functional analysis or algebra to have something to experiment with. Similarly category theory alone will never teach you to think mathematically - to build models. For CS inclined entering into logic study is today a very rewording experiance but you must feel confident with CT for reading modern proof theory and additionally operator algebra entering into linear logic. The reward: you get closer to functional programming or quantum mechanics without even knowing that:-) Digging in Haskell can make you fluent in writing some computational stuff to experiment with, but it will most certainly follow thought experiment not vice versa. Relying on such hybrid thinking too much can be harmful though. A mathematician follows intuition, ideally he should not even plan what he will do before he spots something that will drive his attention. Programming is the opposite - planning lies at the heart of it. Even languages that fancy mathematical concepts belong still to technology and thechnology is to eliminate problems and not to investigate them. Mathematics and logic will definitelly influence CS more with each decade untill it becomes a science like phisics. However how shellow this science still is in CS today demonstrate the havoc with multicore, where linguistics, model theory, tamplet programming, object programming, Haskell(?) compete head in head to cover the bare ass... Cheers, -Andrzej Jaworski Moving to Haskell Cafe <haskell-cafe@haskell.org>
participants (10)
-
Albert Y. C. Lai -
Andrzej Jaworski -
Bulat Ziganshin -
Cale Gibbard -
Don Stewart -
Evan Klitzke -
Fritz Ruehr -
Juarez Assumpcao Muylaert Filho -
Ketil Malde -
Tomas Caithaml