New to FP

I am new to FP and have been struggling on an on & off basis for over a year now. I think now I have at least an elementary hold on various facets of the field. My interest lies primarily in theoretical & formal computer science. So could somebody please recommend me which language would be most suitable for my purposes??I mean it should help me grasp the underlying mathematics without getting me diverted into how it can be helpful in implementing "real" projects.

I know something of haskell and am now beginning ML. And have advanced knowledge of C#.Net including the functional extensions in version 3.0. Some pointers as to useful web tutorials or books will also be great.

thanking in advance
Barun

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I would like to suggest

Aside from the usual ones like Scheme, I would like to suggest Joy. It is a stack oriented functional language and based on combinatory logic.

Joy or Forth??

Thanks...I admit I had never heard of it before but i looked it up and seems quite attractive & also a bit bizarre. But Joy on the surface looked quite different from conventional Haskell or F#. is it only due to the postfix notation or does it differ much from other functional languages.Systematically put these are some follow-up questions
1)does the post-fix notation provide any advantages over the infix notation?
2)What prerequisites are needed for understanding at least the basics of combinatorial logic? What does it deal with exactly?
3)As I was going through the net reading about Joy I chanced upon Forth. Online resources were greater on forth.How do Joy & Forth compare in the modern day?
4)I downloaded & have started using JJoy. Are there any standard compilers for Joy??

joy

Joy is very different from Haskell/ML and others due to the absence of variables.

1)Does the post-fix notation provide any advantages over the infix notation?
It allows the syntax to be very minimal (almost absent). This is what I found to be advantageous. But it is a subjective judgment. The language itself is so simple that most people looking at it have implemented a variant of it. :)

2)What prerequisites are needed for understanding at least the basics of combinatorial logic? What does it deal with exactly?
There are quite a lot of resources for it in the web. This book (To mock a mocking bird) may help you with the basics.

3)As I was going through the net reading about Joy I chanced upon Forth. Online resources were greater on forth.How do Joy & Forth compare in the modern day?

Forth has a very large amount of libraries, implementations, and books written on it. Quite a few boot proms have forth interpreter built into them. It gives you most of the amenities of a language including local variables, imperative control flow etc.

Joy on the other hand is very minimal and consistent in syntax. It has better theoretical underpinnings and is a pure functional language. You can think of joy to be in the same place as scheme while forth is in the place of common lisp (standard libraries, implementations etc).

4)I downloaded & have started using JJoy (do you mean JoyJ?). Are there any standard compilers for Joy??

No compilers that I know of (yet).

Proof Assistant

I would recommend a proof assistant. Learning something like Coq, Isabelle or ACL2 is doubly useful for someone from an FP background, since you get to code and prove in a FP language. If you are coming from Haskell/SML then Coq and Isabelle would probably be most natural.

I'm curious about what other people would recommend for proof assistants...

Joy

Thanks a lot Rahul for the detailed exposition...am working on it now....