BT

Interview: Don Syme Answering Questions on F#, C#, Haskell and Scala

by Abel Avram on Mar 27, 2009 |

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. 

Hello stranger!

You need to Register an InfoQ account or 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

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

A good interview by Dmitry Tsygankov

It really explains a lot of things.

Excellent interview! by Jules Jacobs

Excellent interview!

some influence has been forgotten! by Dominique De Vito

While the interview is interesting, I feel quite strange a strong F# influence has been completely forgotten here: OCaml, as F# has sometimes been described like OCaml with the addition of .NET Framework libraries.

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

Oh and you forgot about Elephant2000 :)

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

It would be nice to be able to create F# lambda in C# code. :)

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.. :)

awesome interview, why haven't more people read this? by Emran Talukder

I'm surprised this interview hasn't gotten more exposure! it is awesome. No doubt F# and Scala will always be compared. Sadek Drobi is completely accurate that languages like Scala and F# have turned younger developers (like myself) to follow the polyglot school of thought. Again, great interview!

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

8 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2014 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT