INDIES

[Haskell 2010 Language Report] 서문 본문

Haskell/2010 Language Report

[Haskell 2010 Language Report] 서문

jwvg0425 2015. 8. 18. 00:31

Haskell 2010 Language Report


목표


언어를 디자인하는 것에 있어 위원회의 최우선 목표는 아래의 제약 사항들을 만족시키는 것이었다.


 1. 지도, 연구 및 대규모 시스템을 구축하는 것을 포함한 어플리케이션에 적합할 것.

 2. 형식 구문과 의미론의 발행을 통해 완벽하게 설명될 것

 3. 자유롭게 사용 가능할 것. 어느 누구든 언어를 구현할 권리가 있고, 그걸 필요한 누구에게나 분배할 수 있을 것.

 4. It should be based on ideas that enjoy a wide consensus. ( 해석 부탁 )

 5. 함수형 프로그래밍 언어 속의 불필요한 다양성을 줄일 것


 Haskell 2010 : 언어 및 라이브러리


위원회는 Haskell이 언어 디자인의 연구 방향에 있어 그 기반처럼 다뤄지기를 의도했으며, 실험적인 기능을 포함하여 언어의 다양한 확장과 변형이 나오길 희망했다.

Haskell은 첫 발표 이후 정말로 꾸준히 발전해왔다. 1997년 중반에, Haskell 1.0부터 1.4까지 언어 디자인의 5가지 버전이 있었다. 1997년 암스테르담에서의 Haskell 워크숍에서, 안정된 사양의 Haskell이 필요하다는 결론이 내려졌다. 여기에는 "Haskell 98"이라는 이름이 붙여졌고 이는 1999년 1월에 발행되었다. 사소한 버그들의 수정은 2002년도에 Revised Haskell 98 Report로 이어졌다.

 2005년의 Haskell 워크숍에서, 공식적인 언어에 대한 굉장히 많은 표준들이 폭넓게 쓰이고 있으며(그리고 서로 다른 구현에 의해 지원되고 있으며), 근본적으로 현 상황을 성문화하고 합법화하기 위해 새로운 언어 표준을 제정하는 것이 나을 것이라는 합의가 이루어졌다.

 새로운 기능들 중 쉽게 이해될 수 있으며 오랫동안 사람들이 수긍해온 기능들만 받아들이고자 한 Haskell Prime의 활동은 그래서 Haskell 98의 비교적 보수적인 확장으로 여겨졌다. 근 몇년간 있었던 언어 연구의 상당한 진척들을 반영하려 했음에도 불구하고 이건 너무 "안정적인" 언어를 의도한 것이었다.

 언어 디자인을 수년 간 탐색한 후, 언어를 하나의 단일한 버젼으로 만드는 것은 너무 큰 일이며, 언어의 진전을 위한 가장 나은 방향은 매년 적은 수의 이해하기 쉬운 확장과 변화들을 조금씩 합쳐나가며 발전해나가는 것이라는 결론이 내려졌다. Haskell 2010은 그 첫 번째 결과물이며, 매년 하나의 새로운 변경 사항들이 나올 것으로 기대된다.


 Haskell 98에서의 확장


 Haskell 98과 비교하여 Haskell 2010에서 가장 크게 달라진 점은 아래와 같다.


새로운 기능들:

 - 외부 함수 인터페이스(Foreign Function Interface - FFI)

 - 계층적 모듈 이름(Data.Bool 등)

 - 패턴 가드(Pattern guards)


사라진 기능들:

 - (n + k) 패턴 구문


  Haskell Resources


 Haskell 웹사이트 www.haskell.org 에는 아래 목록을 포함한 유용한 정보가 많이 실려있다.

 - 언어와 라이브러리 정의의 온라인 버젼

 - Haskell의 튜토리얼 정보

 - 자세한 Haskell 메일링 리스트

 - Haskell의 구현

 - Haskell 툴과 라이브러리에의 기여

 - Haskell 어플리케이션

 - 사용자가 기여하는 위키 페이지

 - Haskell 커뮤니티의 뉴스와 사건들


 Haskell 메일링 리스트나 Haskell 위키를 통해 코멘트를 달고, 개선점을 제안하고, 언어나 보고서(report) 상의 표현에 대해 비판하는 것 모두 환영한다.


 언어 구축(Building language)


 Haskell은 연구자들과 어플리케이션 프로그래머들의 활발한 커뮤니티에 의해 만들어지고 꾸준히 유지되어간다. 아래는 언어 및 라이브러리 위원회의 일원으로서 언어에 대해 정말로 많은 시간과 노력을 쏟은 특히 헌신적인 사람들이다. 여기 그들의 이름과, 관련 시기의 소속이 기재되어 있다.


Arvind (MIT)

Lennart Augustsson (Chalmers University)

Dave Barton (Mitre Corp)

Brian Boutel (Victoria University of Wellington)

Warren Burton (Simon Fraser University)

Manuel M T Chakravarty (University of New South Wales)

Duncan Coutts (Well-Typed LLP)

Jon Fairbairn (University of Cambridge)

Joseph Fasel (Los Alamos National Laboratory)

John Goerzen

Andy Gordon (University of Cambridge)

Maria Guzman (Yale University)

Kevin Hammond [editor] (University of Glasgow)

Bastiaan Heeren (Utrecht University)

Ralf Hinze (University of Bonn)

Paul Hudak [editor] (Yale University)

John Hughes [editor] (University of Glasgow; Chalmers University)

Thomas Johnsson (Chalmers University)

Isaac Jones (Galois, inc.)

Mark Jones (Yale University, University of Nottingham, Oregon Graduate Institute)

Dick Kieburtz (Oregon Graduate Institute)

John Launchbury (University of Glasgow; Oregon Graduate Institute; Galois, inc.)

Andres Löh (Utrecht University)

Ian Lynagh (Well-Typed LLP)

Simon Marlow [editor] (Microsoft Research)

John Meacham

Erik Meijer (Utrecht University)

Ravi Nanavati (Bluespec, inc.)

Rishiyur Nikhil (MIT)

Henrik Nilsson (University of Nottingham)

Ross Paterson (City University, London)

John Peterson [editor] (Yale University)

Simon Peyton Jones [editor] (University of Glasgow; Microsoft Research Ltd)

Mike Reeve (Imperial College)

Alastair Reid (University of Glasgow)

Colin Runciman (University of York)

Don Stewart (Galois, inc.)

Martin Sulzmann (Informatik Consulting Systems AG)

Audrey Tang

Simon Thompson (University of Kent)

Philip Wadler [editor] (University of Glasgow)

Malcolm Wallace (University of York)

Stephanie Weirich (University of Pennsylvania)

David Wise (Indiana University)

Jonathan Young (Yale University)


 [editor] 라고 표시된 사람들은 하나 혹은 그 이상의 언어 개정에 대해서 편집 위원(co-ordinating editor)의 역할을 했다.

 추가로, 많은 사람들이 작지만 정말 의미있는 유용한 기여를 해줬다. 다음이 그 목록이다. Hans Aberg, Kris Aerts, Sten Anderson, Richard Bird, Tom Blenko, Stephen Blott, Duke Briscoe, Paul Callaghan, Magnus Carlsson, Mark Carroll, Franklin Chen, Olaf Chitil, Chris Clack, Guy Cousineau, Tony Davie, Craig Dickson, Chris Dornan, Laura Dutton, Chris Fasel, Pat Fasel, Sigbjorn Finne, Michael Fryers, Peter Gammie, Andy Gill, Mike Gunter, Cordy Hall, Mark Hall, Thomas Hallgren, Matt Harden, Klemens Hemm, Fergus Henderson, Dean Herington, Bob Hiromoto, Nic Holt, Ian Holyer, Randy Hudson, Alexander Jacobson, Patrik Jansson, Robert Jeschofnik, Orjan Johansen, Simon B. Jones, Stef Joosten, Mike Joy, Wolfram Kahl, Stefan Kahrs, Antti-Juhani Kaijanaho, Jerzy Karczmarczuk, Kent Karlsson, Martin D. Kealey, Richard Kelsey, Siau-Cheng Khoo, Amir Kishon, Feliks Kluzniak, Jan Kort, Marcin Kowalczyk, Jose Labra, Jeff Lewis, Mark Lillibridge, Bjorn Lisper, Sandra Loosemore, Pablo Lopez, Olaf Lubeck, Christian Maeder, Ketil Malde, Michael Marte, Jim Mattson, John Meacham, Sergey Mechveliani, Gary Memovich, Randy Michelsen, Rick Mohr, Andy Moran, Graeme Moss, Arthur Norman, Nick North, Chris Okasaki, Bjarte M. Østvold, Paul Otto, Sven Panne, Dave Parrott, Larne Pekowsky, Rinus Plasmeijer, Ian Poole, Stephen Price, John Robson, Andreas Rossberg, George Russell, Patrick Sansom, Michael Schneider, Felix Schroeter, Julian Seward, Nimish Shah, Christian Sievers, Libor Skarvada, Jan Skibinski, Lauren Smith, Raman Sundaresh, Josef Svenningsson, Ken Takusagawa, Wolfgang Thaller, Satish Thatte, Tom Thomson, Tommy Thorn, Dylan Thurston, Mike Thyer, Mark Tullsen, David Tweed, Pradeep Varma, Keith Wansbrough, Tony Warnock, Michael Webber, Carl Witty, Stuart Wray, and Bonnie Yantis.

 Finally, aside from the important foundational work laid by Church, Rosser, Curry, and others on the lambda calculus, it is right to acknowledge the influence of many noteworthy programming languages developed over the years. Although it is difficult to pinpoint the origin of many ideas, the following languages were particularly influential: Lisp (and its modern-day incarnations Common Lisp and Scheme); Landin’s ISWIM; APL; Backus’s FP [1]; ML and Standard ML; Hope and Hope+; Clean; Id; Gofer; Sisal; and Turner’s series of languages culminating in Miranda1 . Without these forerunners Haskell would not have been possible.


Simon Marlow 

Cambridge, April 2010