InfoQ

Interview

Recorded at:
Recorded at

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

Interview with Don Syme by Sadek Drobi on Mar 27, 2009

Community
.NET
Topics
Language Design ,
Language
Tags
Haskell ,
Scala ,
F# ,
Generics ,
C# 4 ,
C#
Summary
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.

Bio
Don Syme has had a major contribution to the design of F#. He has also participated in the design of C# generics and .NET CLR. He joined Microsoft Research in 1998 and has a Ph.D. from the University of Cambridge Computer Laboratory in 1999.

About the conference
QCon is a conference that is organized by the community, for the community.The result is a high quality conference experience where a tremendous amount of attention and investment has gone into having the best content on the most important topics presented by the leaders in our community.QCon is designed with the technical depth and enterprise focus of interest to technical team leads, architects, and project managers.
I'm Sadek Drobi, I'm here at QCon San Francisco, with Don Syme and we are going to talk about F# and functional programming languages. Don, why don't you tell us about yourself and what you've been up to?
I've heard that there was a project where Microsoft started to integrate Haskell on .NET and then it was replaced with the F# project. Is that true? If it's true, why?
The promise of F# was this seamless interoperability with the .NET framework. Did you achieve that? Don't you think that the problem got transferred to semantic differences between 2 paradigms?
When designing F#, did you have to explore all that exists in the CLR as functionalities, like extension method, or you did a choice to expose that?
Often, laziness gets associated with functional programming and we know that F# is, somehow, a functional programming language, yet you chose to make it strict by default and laziness as option. Why did you decide to do this?
Talking about Haskell, what do you think of type classes?
Where does the power of F# come from? What is the power of F#?
Do you think that F#, because now it's getting a first class language in the .NET platform, competes with C# or each one will have its own domain of application?
Frameworks, like Ruby on Rails, get a lot of success and there is an argument that says that the success came from the fact that it's implemented using the semantics of Rails. Do you think that will or should be frameworks written with the semantics of F# for persistence or web or whatever other concerns?
Usually, I don't know why, but each time we talk about F#, there is Scala that is mentioned, as if there are some similarities between them. What do you think of Scala?
There is an interesting feature of F#, called asynchronous workflows. Can you tell us briefly about this feature?
Usually, in the Microsoft Research, there are several projects, and one project proves interesting and we can get inspired from it in existing technologies or mainstream technologies. That didn't happen with F#; we are shipping F#. What do you feel about it?
On the subject of generics, do you think that there are some more powerful constrains that can be added to that generic system?
Now we are on a CTP of F#. Will there be any breaking changes in the F# language?
We know on the C# 4.0 there will be some dynamic features and dynamic type. Are you considering adding these things to F#?
show all  show all
A good interview by Dmitry Tsygankov Posted Mar 27, 2009 7:00 AM
Excellent interview! by Jules Jacobs Posted Mar 29, 2009 6:10 AM
some influence has been forgotten! by Dominique De Vito Posted Mar 31, 2009 2:29 AM
Re: some influence has been forgotten! by Dmitry Tsygankov Posted Apr 1, 2009 1:05 AM
Re: some influence has been forgotten! by Sadek Drobi Posted Apr 1, 2009 7:39 AM
Re: some influence has been forgotten! by Dominique De Vito Posted Apr 3, 2009 6:13 AM
  1. Back to top

    A good interview

    Mar 27, 2009 7:00 AM by Dmitry Tsygankov

    It really explains a lot of things.

  2. Back to top

    Excellent interview!

    Mar 29, 2009 6:10 AM by Jules Jacobs

    Excellent interview!

  3. Back to top

    some influence has been forgotten!

    Mar 31, 2009 2:29 AM 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

  4. Back to top

    Re: some influence has been forgotten!

    Apr 1, 2009 1:05 AM 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...

  5. Back to top

    Re: some influence has been forgotten!

    Apr 1, 2009 7:39 AM 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 :)

  6. Back to top

    Re: some influence has been forgotten!

    Apr 3, 2009 6:13 AM 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.

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.