퓨어스크립트
1. 개요
퓨어스크립트는 2013년 필 프리먼이 설계한 함수형 프로그래밍 언어이다. 하스켈을 자바스크립트로 컴파일하려는 기존 시도에 대한 대안으로 개발되었으며, 엄격한 평가, 불변 자료 구조, 타입 추론을 특징으로 한다. 퓨어스크립트는 하스켈과 유사한 타입 시스템을 가지며, 자바스크립트, C++11, Go 코드를 재사용하기 위한 외부 함수 인터페이스를 제공한다. 또한 점진적 컴파일을 지원하며, 타입 힌트를 통한 타입 중심 개발을 가능하게 한다.
| 종류 | 프로그래밍 언어 |
|---|---|
| 패러다임 | 함수형 |
| 설계 | 필 프리먼(Phil Freeman) |
| 발표 연도 | 2013년 |
| 최신 버전 | 0.15.7 |
| 최신 버전 발표일 | 2022년 12월 12일 |
| 영향 받은 언어 | Haskell JavaScript |
| 타이핑 | 추론 정적 스트롱(strong) |
| 파일 확장자 | .purs |
| 웹사이트 | PureScript 공식 웹사이트 |
| 라이선스 | BSD |
-
2013년 개발된 프로그래밍 언어 -
F*
F*는 2007년 프랑스 국립 전산 및 자동화 연구소에서 설계되었고 마이크로소프트 연구소의 지원을 받아 개발된 종속 타입과 정적 타입 시스템을 갖춘 함수형 프로그래밍 언어로서, 코드 정확성 검증을 통해 안전하고 신뢰할 수 있는 소프트웨어 개발에 기여하며 오픈 소스 프로젝트로 운영되어 보안 커널 및 블록체인 기술 검증 등에 활용된다. -
2013년 개발된 프로그래밍 언어 -
엔트리 (프로그래밍 언어)
엔트리는 네이버 커넥트재단에서 개발한 블록형 프로그래밍 교육 플랫폼으로, 블록 조립을 통해 프로그래밍 학습, 창작물 제작 및 공유가 가능하며, 한국어 지원과 교육 환경에 최적화된 기능이 특징이다. -
2013년 소프트웨어 -
윈도우 8.1
윈도우 8.1은 2013년 10월에 출시된 마이크로소프트의 운영 체제로, 윈도우 8의 개선된 사용자 인터페이스와 기능을 제공하며 2023년 1월 10일에 지원이 종료되었다. -
2013년 소프트웨어 -
파이어폭스 OS
모질라 재단에서 개발한 파이어폭스 OS는 웹 기술을 기반으로 애플리케이션을 구동하는 오픈 소스 모바일 운영 체제였으나, 스마트폰 시장 진출 후 개발이 종료되었고, 이후 스마트 TV 등으로 확장을 시도했으나 프로젝트는 단종되었다. -
패턴 매칭 프로그래밍 언어 -
AWK
AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다. -
패턴 매칭 프로그래밍 언어 -
하스켈
하스켈은 해스켈 커리의 이름을 딴 순수 함수형 프로그래밍 언어로, 여러 함수형 언어 통합 노력의 결과로 탄생하여 느긋한 계산법, 패턴 매칭, 타입 클래스, 모나드 등의 특징을 가지며 GHC가 표준 구현체로 사용된다.
2. 역사
2013년 필 프리먼이 퓨어스크립트를 처음 설계하였다. 프리먼은 Fay, Haste, GHCJS 등 하스켈을 자바스크립트로 컴파일하려는 기존 시도들에 만족하지 못하고 퓨어스크립트 개발을 시작했다. 이후 퓨어스크립트는 커뮤니티에 의해 깃허브(GitHub)에서 개발이 진행되고 있다. 커뮤니티는 전용 빌드 도구인 "Pulp", 문서 디렉터리 "Pursuit", 패키지 관리자 "Spago" 등 핵심 도구를 개발했다.
3. 특징
퓨어스크립트는 엄격한 평가, 불변 자료 구조, 타입 추론을 특징으로 한다. 퓨어스크립트 타입 시스템은 대수적 자료형 및 패턴 매칭, 고차 타입, 타입 클래스 및 함수 종속성, 고계 다형성과 같이 하스켈과 유사한 함수형 언어의 많은 기능을 공유한다.
3.1. 지원 기능
퓨어스크립트는 엄격한 평가, 불변 자료 구조 및 타입 추론을 특징으로 한다. 퓨어스크립트 타입 시스템은 하스켈과 유사한 함수형 언어의 많은 기능을 공유하는데, 대수적 자료형 및 패턴 매칭, 고차 타입, 타입 클래스 및 함수 종속성, 고계 다형성, 행 다형성과 확장 가능한 레코드를 지원한다.
퓨어스크립트의 타입 시스템이 Haskell과 같은 유사한 함수형 언어와 공유하는 기능은 다음과 같다.
* 대수적 자료형
* 패턴 매칭
* 고차 타입
* 타입 클래스
* 함수 종속성
* 고차 랭크 다형성
3.3. 기타 특징
퓨어스크립트 트랜스파일러는 가독성이 좋은 코드를 생성하려고 시도한다. FFI를 통해 기존 자바스크립트, C++11, Go 코드를 재사용할 수 있다.
퓨어스크립트는 점진적 컴파일을 지원하며, 자바스크립트 배포판으로 트랜스파일할 때 반복적인 개발을 위한 소스 코드 편집기 플러그인 구축을 지원한다. Vim, Emacs, Sublime Text, Atom, Visual Studio Code 등 다양한 텍스트 편집기 플러그인이 존재한다.
퓨어스크립트는 타입 힌트 기능을 통해 타입 중심 개발을 지원한다. 누락된 하위 표현식으로 프로그램을 구성할 수 있으며, 자바스크립트 트랜스파일러는 누락된 하위 표현식의 타입을 추론하여 사용자에게 보고한다. 이 기능은 GHC Haskell 컴파일러의 유사한 작업에서 영감을 얻었다.
4. 예시
퓨어스크립트로 작성된 최소한의 "Hello, World!" 프로그램 예시는 다음과 같다.
```haskell
module Main where
import Effect.Console (log)
main = log "Hello World!"
```
위 코드는 타입 추론을 통해 타입을 명시하지 않아도 된다. 명시적인 타입 주석을 포함한 코드는 다음과 같다.
```haskell
module Main where
import Prelude
import Effect (Effect)
import Effect.Console (log)
main :: Effect Unit
main = log "Hello World!"