퓨어스크립트
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
퓨어스크립트는 2013년 필 프리먼이 설계한 함수형 프로그래밍 언어이다. 하스켈을 자바스크립트로 컴파일하려는 기존 시도에 대한 대안으로 개발되었으며, 엄격한 평가, 불변 자료 구조, 타입 추론을 특징으로 한다. 퓨어스크립트는 하스켈과 유사한 타입 시스템을 가지며, 자바스크립트, C++11, Go 코드를 재사용하기 위한 외부 함수 인터페이스를 제공한다. 또한 점진적 컴파일을 지원하며, 타입 힌트를 통한 타입 중심 개발을 가능하게 한다.
더 읽어볼만한 페이지
- 2013년 개발된 프로그래밍 언어 - F*
F*는 2007년 프랑스 국립 전산 및 자동화 연구소에서 설계되었고 마이크로소프트 연구소의 지원을 받아 개발된 종속 타입과 정적 타입 시스템을 갖춘 함수형 프로그래밍 언어로서, 코드 정확성 검증을 통해 안전하고 신뢰할 수 있는 소프트웨어 개발에 기여하며 오픈 소스 프로젝트로 운영되어 보안 커널 및 블록체인 기술 검증 등에 활용된다. - 2013년 개발된 프로그래밍 언어 - 엔트리 (프로그래밍 언어)
엔트리는 네이버 커넥트재단에서 개발한 블록형 프로그래밍 교육 플랫폼으로, 블록 조립을 통해 프로그래밍 학습, 창작물 제작 및 공유가 가능하며, 한국어 지원과 교육 환경에 최적화된 기능이 특징이다. - 패턴 매칭 프로그래밍 언어 - AWK
AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다. - 패턴 매칭 프로그래밍 언어 - 하스켈
하스켈은 해스켈 커리의 이름을 딴 순수 함수형 프로그래밍 언어로, 여러 함수형 언어 통합 노력의 결과로 탄생하여 느긋한 계산법, 패턴 매칭, 타입 클래스, 모나드 등의 특징을 가지며 GHC가 표준 구현체로 사용된다. - 2013년 소프트웨어 - 윈도우 8.1
윈도우 8.1은 2013년 10월에 출시된 마이크로소프트의 운영 체제로, 윈도우 8의 개선된 사용자 인터페이스와 기능을 제공하며 2023년 1월 10일에 지원이 종료되었다. - 2013년 소프트웨어 - 파이어폭스 OS
모질라 재단에서 개발한 파이어폭스 OS는 웹 기술을 기반으로 애플리케이션을 구동하는 오픈 소스 모바일 운영 체제였으나, 스마트폰 시장 진출 후 개발이 종료되었고, 이후 스마트 TV 등으로 확장을 시도했으나 프로젝트는 단종되었다.
| 퓨어스크립트 - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 개요 | |
| 종류 | 프로그래밍 언어 |
| 패러다임 | 함수형 |
| 설계 | 필 프리먼(Phil Freeman) |
| 발표 연도 | 2013년 |
| 최신 버전 | 0.15.7 |
| 최신 버전 발표일 | 2022년 12월 12일 |
| 영향 받은 언어 | Haskell JavaScript |
| 타이핑 | 추론 정적 스트롱(strong) |
| 파일 확장자 | .purs |
| 웹사이트 | PureScript 공식 웹사이트 |
| 라이선스 | BSD |
2. 역사
2013년 필 프리먼이 퓨어스크립트를 처음 설계하였다. 프리먼은 Fay, Haste, GHCJS 등 하스켈을 자바스크립트로 컴파일하려는 기존 시도들에 만족하지 못하고 퓨어스크립트 개발을 시작했다.[25][9][21] 이후 퓨어스크립트는 커뮤니티에 의해 깃허브(GitHub)에서 개발이 진행되고 있다. 커뮤니티는 전용 빌드 도구인 "Pulp"[10][22], 문서 디렉터리 "Pursuit"[11][23], 패키지 관리자 "Spago"[12] 등 핵심 도구를 개발했다.
퓨어스크립트는 엄격한 평가, 불변 자료 구조, 타입 추론을 특징으로 한다. 퓨어스크립트 타입 시스템은 대수적 자료형 및 패턴 매칭, 고차 타입, 타입 클래스 및 함수 종속성, 고계 다형성과 같이 하스켈과 유사한 함수형 언어의 많은 기능을 공유한다.[13]
3. 특징
3. 1. 지원 기능
퓨어스크립트는 엄격한 평가, 불변 자료 구조 및 타입 추론을 특징으로 한다. 퓨어스크립트 타입 시스템은 하스켈과 유사한 함수형 언어의 많은 기능을 공유하는데, 대수적 자료형 및 패턴 매칭, 고차 타입, 타입 클래스 및 함수 종속성, 고계 다형성, 행 다형성과 확장 가능한 레코드를 지원한다.[13]
퓨어스크립트의 타입 시스템이 Haskell과 같은 유사한 함수형 언어와 공유하는 기능은 다음과 같다.
3. 2. 미지원 기능
퓨어스크립트 타입 시스템은 하스켈의 일부 고급 기능인 GADTs 및 타입 패밀리에 대한 지원이 부족하다.[13]
3. 3. 기타 특징
퓨어스크립트 트랜스파일러는 가독성이 좋은 코드를 생성하려고 시도한다.[13] FFI를 통해 기존 자바스크립트[14], C++11[15][16], Go[17] 코드를 재사용할 수 있다.
퓨어스크립트는 점진적 컴파일을 지원하며, 자바스크립트 배포판으로 트랜스파일할 때 반복적인 개발을 위한 소스 코드 편집기 플러그인 구축을 지원한다.[18] Vim, Emacs, Sublime Text, Atom, Visual Studio Code 등 다양한 텍스트 편집기 플러그인이 존재한다.
퓨어스크립트는 타입 힌트 기능을 통해 타입 중심 개발을 지원한다.[19] 누락된 하위 표현식으로 프로그램을 구성할 수 있으며, 자바스크립트 트랜스파일러는 누락된 하위 표현식의 타입을 추론하여 사용자에게 보고한다. 이 기능은 GHC Haskell 컴파일러의 유사한 작업에서 영감을 얻었다.[20]
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!"
참조
[1]
웹사이트
purescript/purescript
https://github.com/p[...]
2022-06-03
[2]
웹사이트
PureScript to JavaScript transpiler
https://github.com/p[...]
2023-01-22
[3]
웹사이트
PureScript to C++11 transpiler
https://github.com/a[...]
2023-01-22
[4]
간행물
purerl - the PureScript Erlang backend
https://github.com/p[...]
purerl
2023-09-05
[5]
웹사이트
PureScript to Go transpiler
https://github.com/a[...]
2023-01-22
[6]
웹사이트
PureScript
https://purescript.o[...]
2019-03-14
[7]
간행물
purescript/documentation
https://github.com/p[...]
PureScript
2023-02-20
[8]
간행물
Alternative backends
https://github.com/p[...]
PureScript
2023-02-20
[9]
웹사이트
Read PureScript by Example {{!}} Leanpub
https://leanpub.com/[...]
2019-03-14
[10]
간행물
A build tool for PureScript projects
https://github.com/p[...]
PureScript Contrib
2019-03-14
[11]
웹사이트
Pursuit
https://pursuit.pure[...]
2019-03-14
[12]
간행물
🍝 PureScript package manager and build tool powered by Dhall and package-sets: spacchetti/spago
https://github.com/s[...]
spacchetti
2019-03-14
[13]
간행물
Documentation for the PureScript language, compiler, and tools.: purescript/documentation
https://github.com/p[...]
PureScript
2019-03-14
[14]
웹사이트
The Foreign Function Interface
https://github.com/p[...]
PureScript
2023-01-22
[15]
웹사이트
FFI
https://github.com/a[...]
PureScript
2023-01-22
[16]
간행물
C++ foreign export implementations for the standard library
https://github.com/a[...]
PureScript
2023-01-22
[17]
웹사이트
Go foreign export implementations for the standard library
https://github.com/a[...]
PureScript
2023-01-22
[18]
간행물
purs ide: Editor and tooling support for the PureScript programming language
https://github.com/p[...]
2019-04-21
[19]
간행물
Implementing type directed search for PureScript
2016-10-27
[20]
간행물
Suggesting Valid Hole Fits for Typed-Holes (Experience Report)
https://dl.acm.org/c[...]
2018-09-27
[21]
웹사이트
Read PureScript by Example {{!}} Leanpub
https://leanpub.com/[...]
2019-03-14
[22]
간행물
A build tool for PureScript projects
https://github.com/p[...]
PureScript Contrib
2019-03-14
[23]
웹사이트
Pursuit
https://pursuit.pure[...]
2019-03-14
[24]
웹인용
purescript/purescript
https://github.com/p[...]
2022-06-03
[25]
웹인용
Read PureScript by Example {{!}} Leanpub
https://leanpub.com/[...]
2019-03-14
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com