계정: 로그인
AA 📝
1. 소개

A Gentle Introduction to Haskell, Version 98
다음 위로


이 튜토리얼의 목표는 프로그래밍을 가르치려는 것이 아니며, 함수형 프로그래밍을 가르치려는 것은 더더욱 아닙니다. 그보다는 자칫 기술적인 측면에 지나치게 치우칠 수 있는 Haskell Report [4]를 보완하고자 하는 의도입니다. 이 문서의 목표는 이미 최소한 한 가지 이상의 언어에 (가능하다면 함수형 언어—비록 그것이 ML이나 Scheme 등의 ‘불완전한 함수형 언어’라고 할지라도) 경험이 있는 누군가에게 Haskell에 대하여 친절하게 소개하려는 것입니다. 만일 함수형 프로그래밍 스타일에 대해 더 알고싶다면 Bird의 책 Introduction to Functional Programming [1]이나 Davie의 An Introduction to Functional Programming Systems Using Haskell [2]을 강력 추천합니다. Haskell에 사용된 언어 설계 이론을 포함하여 함수형 프로그래밍 언어와 기술에 관한 유용한 조사를 원한다면 [3]을 보시기 바랍니다.

Haskell은 1987년에 등장한 이래 비약적으로 발전해왔습니다. 이 튜토리얼은 Haskell 98에 관해 다룹니다. Haskell의 구판(舊版)은 현재 퇴화되어 사용하지 않고있으며, Haskell 98을 사용하기를 권장합니다. 다양하게 구현된 수많은 Haskell 98용 확장물(extensions)들도 있습니다. 물론 이들은 아직 Haskell 언어의 정규 부분이 아니며, 이 튜토리얼에서는 언급하지 않습니다.

언어의 특성을 소개하기 위한 일반적인 전략은: 아이디어를 유발시키고 몇가지 용어를 정의한 후 약간의 예시를 보여주고 더 자세한 사항을 위해 Haskell Report의 특정 부분을 지목해주는 것입니다. 그러나, 일단 한 번 이 Gentle Introduction을 완독할 때까지는 세부 사항들은 완전히 무시하길 권합니다. 대신, (Haskell Report 부록 A와 Library Report [5]의 standard library에 있는) Haskell의 Standard Prelude에는 유용한 Haskell 코드 예제들이 많이 들어있으니, 이 튜토리얼을 끝낼 때까지는 한 번 쭉 읽어보기를 권합니다. 진짜 Haskell 코드가 어떤 느낌인지 느껴볼 수 있을 뿐만 아니라 Haskell의 표준 내장 함수와 타입들에 익숙해질 수 있습니다.

마지막으로, Haskell 웹사이트 http://haskell.org/에는 Haskell 언어와 그 구현물들에 대한 다양한 정보가 있습니다.

일단 처음에는 구문 규칙에 과다하게 집중하지 않기로 합니다. 대신 예제가 나올 때마다 조금씩 구문을 소개하며, 지금 이 단락처럼 박스로 감싸겠습니다. Haskell Report가 여전히 상세 사항에 대한 권위있는 자료긴 하지만, 이런 방식은 Report의 구성과는 극명한 대조를 이룹니다. (“§2.1”과 같은 참조 표시는 Haskell Report의 해당 섹션을 가리킵니다.)

Haskell은 (Luca Cardelli의 표현을 빌리자면) typeful한 프로그래밍 언어입니다. 온통 타입들이며, 초보자들이 초기에 Haskell 타입 체계의 강력함과 복잡성을 받아들이는 것을 가장 어려워합니다. Perl이나 Tcl, Scheme 등 상대적으로 ‘untypeful’한 언어에만 경험이 있는 사람들에게 있어서 이런 재조정 과정은 무척 어려운 일입니다. Haskell의 타입 시스템은 다른 대부분의 언어들과는 다르고 좀더 풍부하기 때문에, Java, C, Modula나 심지어 ML에 익숙한 사람들에게도 이런 재조정은 (비록 조금 쉬울지라도) 여전히 뭔가 어렵습니다. 어느 경우에든, ‘typeful programming’은 Haskell 프로그래밍 경험의 중요한 일부분이며 피해갈 수 없는 사항입니다.


다음 위로
A Gentle Introduction to Haskell, Version 98

Copyright © 1999 Paul Hudak, John Peterson and Joseph Fasel

Permission is hereby granted, free of charge, to any person obtaining a copy of “A Gentle Introduction to Haskell” (the Text), to deal in the Text without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Text, and to permit persons to whom the Text is furnished to do so, subject to the following condition: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Text.