
On 11/3/06, Bulat Ziganshin
Hello Slavomir,
Thursday, November 2, 2006, 9:59:38 PM, you wrote:
one is okay, though, but you have to start ghc with -fallow-undecidable-instances and -fglasgow-exts I'm afraid.
Thanks, Sebastian. That was helpful. Are there any papers on the subject?
i recommend you to read in the following sequence:
1) The paper that at first time introduced type classes and their implementation using dictionaries was Philip Wadler and Stephen Blott "How to make ad-hoc polymorphism less ad-hoc" (http://homepages.inf.ed.ac.uk/wadler/papers/class/class.ps.gz)
2) http://haskell.org/haskellwiki/OOP_vs_type_classes
3) Ralf Lammel and Klaus Ostermann paper "Software Extension and Integration with Type Classes" (http://homepages.cwi.nl/~ralf/gpce06/) which prompts me to start thinking about differences between OOP and type classes instead of their similarities
4) ghc user's guide, chapter 7 describes Haskell language extensions
5) You can find more papers on the http://haskell.org/haskellwiki/Research_papers/Type_systems#Type_classes page. Of those papers i found a most interesting "exporing the design space" one
6) The best paper on type level arithmetic using type classes i've seen is "Faking it: simulating dependent types in Haskell" ( http://www.cs.nott.ac.uk/~ctm/faking.ps.gz )
7) The great demonstration of type-level arithmetic is TypeNats package which "defines type-level natural numbers and arithmetic operations on them including addition, subtraction, multiplication, division and GCD" ( darcs get --partial --tag '0.1' http://www.eecs.tufts.edu/~rdocki01/typenats/ )
8) I should also mention here Oleg Kiselyov page on class-based type-level programming in Haskell: http://okmij.org/ftp/Haskell/types.html
-- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com
Wow. Thank you for the comprehensive list. I feel almost obligated reading =-) Cheers. -- Slavomir Kaslev