Interview: Don Syme Answering Questions on F#, C#, Haskell and Scala
In this interview made by InfoQ’s Sadek Drobi, Don Syme, a Senior Researcher at Microsoft Research, answers questions mostly on F#, but also on functional programming, C# generics, type classes in Haskell, similarities between F# and Scala.
Watch: Don Syme Answering Questions on F#, C#, Haskell and Scala (47 min.)
Syme is provoked to talk about why Haskell did not end up as a .NET language even though it was seriously considered to be implemented on .NET at one time. He also talks extensively about F#, some of the decision made internally and their reasons, why some features entered in while others were left out. Among others, he explains what asynchronous workflows are and the intent to add dynamic features to a future version of the language.
Syme also expresses his opinion on Haskell’s type classes, talks about similarities/differences between F# and Scala, C# generics, and general functional programming topics.
some influence has been forgotten!
by
Dominique De Vito
Read OCaml influence here.
This being said, I agree that F# power comes from the fact different programming paradigms are mixed into a single language, so that, if one does not fit for the targeted task, the others could fit. Multiple-programming-paradigms languages are raising, and IMHO it's a good news, because they are more helpful; and it would change infinite debates like "my functional language versus your OO language", because both paradigms would be into the same language: these debates would go into another level.
Dominique
www.jroller.com/dmdevito
Re: some influence has been forgotten!
by
Dmitry Tsygankov
it would change infinite debates like "my functional language versus your OO language", because both paradigms would be into the same language
I don't believe in that. Can you imagine a language that supports both laziness and strictness equally well, type classes with all of the extensions, module system of ML, Lisp-style macros, both static and dynamic typing, a standard object-oriented system with both interfaces and mixins and Lisp-style multimethods? Both does and doesn't allow programmers to reassign variables? And both does (like Haskell) and doesn't (like everything else) have a separate type for non-referential-transparent functions? And then there is Prolog, which is something completely different. And some experimental languages like Agda with (as far as I understand) a programmable type-checker...
Re: some influence has been forgotten!
by
Sadek Drobi
I agree with you Dimitry and that is why I like languages like Haskell, Smaltalk, Forth, Lisp because I can think of them as a coherent and consistent set of concepts. Yet languages like F# and Scala might help people getting into Polyglot and multi paradigm programming :)
Re: some influence has been forgotten!
by
Dominique De Vito
it would change infinite debates like "my functional language versus your OO language", because both paradigms would be into the same language
I don't believe in that. Can you imagine a language that supports both laziness and strictness equally well, type classes with all of the extensions, module system of ML, Lisp-style macros, both static and dynamic typing, a standard object-oriented system with both interfaces and mixins and Lisp-style multimethods? Both does and doesn't allow programmers to reassign variables? And both does (like Haskell) and doesn't (like everything else) have a separate type for non-referential-transparent functions? And then there is Prolog, which is something completely different. And some experimental languages like Agda with (as far as I understand) a programmable type-checker...
Well, I didn't want to say that with one ultimate language we would solve all debates, or whatever.
I wanted to say it's time to experiment, to cross old sterile frontiers, to change ever-during debates... while mixing programming paradigms into one language;
- With a functional-only language, most programmers are reluctant to do OO.
- With an OO-only language, most programmers face functional features as toy features or not-ready-for-mainstream features.
With multi-paradigm language (but not the ultimate one, of course), things would change and IMHO developers are going to be less reluctant to cross the chasm, as using a multi-paradigm language, the price is to change, from one paradigm to another one, would be little.
Re: some influence has been forgotten!
by
Alexandre Trépanier
let's say you do (x,y) => x+y in C# than you could do (x,y) -> (F# code here)
i'm sure it would be relatively easy to implement and support this in C# 5..
and it would push the use of F# a lot where there's a big need to manipulate data in complex ways...
of course, refactoring tool could extract that lambda to send to an F# class, and link the C# code in one swoop if you ever need to go deeper in F# with classes and all..
Anyway, F# is powerful but the syntax is very different of C#, compared to scala vs java and also java is old so there's a big need for scala but C# 5 have already a lot of functional tools so there is really not a lot to push F# against C# on the market..
The best would be to mix both so that people can code small simple F# lambdas first before going with more complex F# programming.
Also it would push people to learn the interoperability limits and corresponding types of both languages.
the support for all this is already there but it might not make everyone happy.
my 2 cents.. :)
Educational Content
Large-Scale Continuous Testing in the Cloud
John Penix May 24, 2013
Managing Build Jobs for Continuous Delivery
Martin Peston May 24, 2013
Clojure in the Field
Stuart Halloway May 23, 2013




Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think