InfoQ

Interview

Recorded at:
Recorded at

John Hughes Contrasts Erlang and Haskell

Interview with John Hughes by Sadek Drobi on Nov 05, 2009     Download: MP3

Community
Architecture
Topics
Language
Tags
Functional Programming ,
Testing ,
Erlang ,
Test Automation ,
Erlang Factory 2009 ,
Haskell
Summary
John Hughes has ported QuickCheck from Haskell to Erlang. In this interview, he contrasts the two languages, outlining features that he finds more attractive in each of them. He also explains how QuickCheck works and what makes it different from unit tests.

Bio
John Hughes is co-founder and CEO of Quviq AB, and the creator of QuickCheck. He was also involved in the design of Haskell being co-chair of the committee defining the language. He currently divides his time between his academic involvement as Chair of Chalmers University, Gothenburg, and QuviQ, the company promoting QuickCheck.

About the conference
The Erlang Factory is an event that focuses on Erlang - the computer language that was designed to support distributed, fault-tolerant, soft-realtime applications with requirements for high availability and high concurrency. The main part of the Factory is the conference - a two-day collection of focused subject tracks with an enormous opportunity to meet the best minds in Erlang and network with experts in all its uses and applications.
I'm Sadek Drobi, I'm here with John Hughes, at Erlang Factory. John, can you tell us a bit about yourself and what you've been busy with?
From Haskell to Erlang, what made the move?
Do you miss laziness from Haskell?
And types?
What attracts you most in Erlang in contrast to Haskell?
QuickCheck you designed in the beginning in Haskell, right? And then you did a version for Erlang and now you are using it to test race conditions. Can you tell us more about this?
Higher order programming with Haskell is easy because of types. Don't you think that types are enablers for higher order programming?
Both Haskell and Erlang inspire the industry or mainstream in some way or another. Can you tell a bit about what are your favorite features from both languages that are getting mainstream in some way?
With Haskell you've been always thinking it's side effect free, right? Writing a function is side effect free. In Erlang just the fact of passing a message is a side effect. Don't you find it a bit of a problem or a difficulty when programming with Erlang?
Scala is a programming language that got inspired from different other programming languages including Haskell and Erlang, because it has actor model as a library and it has a pretty powerful type system. What do you think of this mixing of features? The same thing with F# which is trying to mix several paradigms, several things like dynamic and static typing in the same language for example. What do you think of this mixing?
Convention over obligation, right?
The QuickCheck framework got implemented in several languages. Are you aware of all the implementations?
For people that don't know about it, can you introduce it a bit to contrast it to unit testing?
For some time, Java was the language of the mainstream. Now we are hearing about lot of other languages, like Erlang, Haskell, F#. Do you think that there will be a next big language or we will be using a lot of languages for doing what we want to do?
Are you still involved in the Haskell community?
More than side effect free, are there other concepts from functional programming that you are applying in Erlang, like maybe monads or other abstractions that we see a lot in Haskell and other functional programming languages?
One thing we use often in Haskell for modeling is type classes. What about Erlang?
Do you miss them?
What do you see as a concept or a technology that will be very interesting for the future?
show all  show all
Corrections by Mark Wutka Posted Nov 5, 2009 2:02 PM
Re: Corrections by Diana Plesa Posted Nov 8, 2009 7:36 AM
Great interview by Leandro Coutinho Posted Nov 12, 2009 3:14 PM
  1. Back to top

    Corrections

    Nov 5, 2009 2:02 PM by Mark Wutka

    Enjoyed the interview!

    After "Some of the Erlang users, especially ...", I think he is saying "Ulf Wiger"

    "When I think of type error, is not" -> "When I make a type error, it's not"

    "attract adherence" -> "attract adherents"

  2. Back to top

    Re: Corrections

    Nov 8, 2009 7:36 AM by Diana Plesa

    Hi Mark,

    The mistakes have been fixed.
    Diana (InfoQ)

  3. Back to top

    Great interview

    Nov 12, 2009 3:14 PM by Leandro Coutinho

    Thanks for provide this very good interview

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.