하스켈이란?
이번 장에서는 하스켈이 어떤 언어인지에 대해 알아보도록 하겠습니다!
하스켈은 어떤 언어인가
순수 함수형 프로그래밍 언어
하스켈(Haskell)은 순수 함수형 프로그래밍 언어로, 변수의 값을 한 번 설정하면 변경할 수 없고, 함수가 부수 효과를 가지지 않습니다.
이를 통해 동일한 매개변수로 호출된 함수는 항상 동일한 결과를 반환하며, 이를 참조 투명성이라고 합니다.
이러한 특성 덕분에 컴파일러가 프로그램의 동작을 예측할 수 있고, 함수의 올바른 작동을 쉽게 검증할 수 있습니다.
또한, 단순한 함수들을 조합하여 더 복잡한 함수를 만들 수 있습니다.
지연 평가
하스켈은 지연 평가(lazy evaluation)를 사용하여, 함수 실행과 계산을 실제로 결과가 필요할 때까지 미룹니다. 이는 참조 투명성과 잘 어울리며, 무한 데이터 구조와 같은 기능을 가능하게 합니다. 만약 리스트를 2배로 만드는 지연 평가 덕분에 초기 데이터를 효율적으로 변환할 수 있습니다.
정적 타입 언어
하스켈은 정적 타입(statically typed) 언어입니다.
프로그램을 컴파일할 때, 컴파일러는 각 코드 조각이 숫자인지 문자열인지 등을 알고 있습니다.
이는 많은 오류를 컴파일 시점에 잡아줍니다. 예를 들어, 숫자와 문자열을 더하려고 하면 컴파일러는 에러를 발생시킵니다.
하스켈은 매우 뛰어난 타입 시스템을 사용하며, 타입 추론(type inference)을 지원합니다.
즉, 코드의 모든 부분에 타입을 명시하지 않아도 타입 시스템이 이를 지능적으로 파악합니다.
예를 들어 a = 5 + 4
라고 할 때, 하스켈에 a
가 숫자임을 명시하지 않아도 하스켈은 이를 스스로 파악합니다.
만약 두 매개변수를 더하는 함수를 만들고, 그 타입을 명시하지 않으면, 해당 함수는 숫자처럼 동작하는 모든 두 매개변수에 대해 동작합니다.
좋습니다! 이제 다음 장에는 하스켈을 사용하기 위한 환경을 설정해보도록 하겠습니다.