퓨어스크립트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

퓨어스크립트는 2013년 필 프리먼이 설계한 함수형 프로그래밍 언어이다. 하스켈을 자바스크립트로 컴파일하려는 기존 시도에 대한 대안으로 개발되었으며, 엄격한 평가, 불변 자료 구조, 타입 추론을 특징으로 한다. 퓨어스크립트는 하스켈과 유사한 타입 시스템을 가지며, 자바스크립트, C++11, Go 코드를 재사용하기 위한 외부 함수 인터페이스를 제공한다. 또한 점진적 컴파일을 지원하며, 타입 힌트를 통한 타입 중심 개발을 가능하게 한다.

퓨어스크립트 - [IT 관련 정보]에 관한 문서
개요
종류프로그래밍 언어
패러다임함수형
설계필 프리먼(Phil Freeman)
발표 연도2013년
최신 버전0.15.7
최신 버전 발표일2022년 12월 12일
영향 받은 언어Haskell
JavaScript
타이핑추론
정적
스트롱(strong)
파일 확장자.purs
웹사이트PureScript 공식 웹사이트
라이선스BSD
📚 더 읽어볼만한 페이지
  • 2013년 개발된 프로그래밍 언어 - F*
    F*는 2007년 프랑스 국립 전산 및 자동화 연구소에서 설계되었고 마이크로소프트 연구소의 지원을 받아 개발된 종속 타입과 정적 타입 시스템을 갖춘 함수형 프로그래밍 언어로서, 코드 정확성 검증을 통해 안전하고 신뢰할 수 있는 소프트웨어 개발에 기여하며 오픈 소스 프로젝트로 운영되어 보안 커널 및 블록체인 기술 검증 등에 활용된다.
  • 2013년 개발된 프로그래밍 언어 - 엔트리 (프로그래밍 언어)
    엔트리는 네이버 커넥트재단에서 개발한 블록형 프로그래밍 교육 플랫폼으로, 블록 조립을 통해 프로그래밍 학습, 창작물 제작 및 공유가 가능하며, 한국어 지원과 교육 환경에 최적화된 기능이 특징이다.
  • 패턴 매칭 프로그래밍 언어 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 패턴 매칭 프로그래밍 언어 - 하스켈
    하스켈은 해스켈 커리의 이름을 딴 순수 함수형 프로그래밍 언어로, 여러 함수형 언어 통합 노력의 결과로 탄생하여 느긋한 계산법, 패턴 매칭, 타입 클래스, 모나드 등의 특징을 가지며 GHC가 표준 구현체로 사용된다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
    브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
    광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.

2. 역사

2013년 필 프리먼이 퓨어스크립트를 처음 설계하였다. 프리먼은 Fay, Haste, GHCJS 등 하스켈자바스크립트로 컴파일하려는 기존 시도들에 만족하지 못하고 퓨어스크립트 개발을 시작했다. 이후 퓨어스크립트는 커뮤니티에 의해 깃허브(GitHub)에서 개발이 진행되고 있다. 커뮤니티는 전용 빌드 도구인 "Pulp", 문서 디렉터리 "Pursuit", 패키지 관리자 "Spago" 등 핵심 도구를 개발했다.

3. 특징

퓨어스크립트는 엄격한 평가, 불변 자료 구조, 타입 추론을 특징으로 한다. 퓨어스크립트 타입 시스템은 대수적 자료형패턴 매칭, 고차 타입, 타입 클래스 및 함수 종속성, 고계 다형성과 같이 하스켈과 유사한 함수형 언어의 많은 기능을 공유한다.

3.1. 지원 기능

퓨어스크립트는 엄격한 평가, 불변 자료 구조 및 타입 추론을 특징으로 한다. 퓨어스크립트 타입 시스템은 하스켈과 유사한 함수형 언어의 많은 기능을 공유하는데, 대수적 자료형패턴 매칭, 고차 타입, 타입 클래스 및 함수 종속성, 고계 다형성, 행 다형성과 확장 가능한 레코드를 지원한다.

퓨어스크립트의 타입 시스템이 Haskell과 같은 유사한 함수형 언어와 공유하는 기능은 다음과 같다.

* 대수적 자료형
* 패턴 매칭
* 고차 타입
* 타입 클래스
* 함수 종속성
* 고차 랭크 다형성

3.2. 미지원 기능

퓨어스크립트 타입 시스템은 하스켈의 일부 고급 기능인 GADTs 및 타입 패밀리에 대한 지원이 부족하다.

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!"