PureScript
PureScript![]() | |
패러다임 | 기능하다 |
---|---|
설계자 | 필 프리먼 |
처음 등장한 | 2013 |
안정된 릴리스 | 2022년 6월 30일 / 0.15.4, 전( |
타이핑 분야 | 추정, 정적, 강력 |
면허증. | BSD[1] |
파일 이름 확장자 | .disclosed(비활성화) |
웹 사이트 | www |
영향을 받다 | |
Haskell, JavaScript |
PureScript는 JavaScript로 컴파일되는 강력한 타입의 순수 기능 프로그래밍 언어입니다.Electron을 사용하여 웹 응용 프로그램, 서버 측 응용 프로그램 및 데스크톱 응용 프로그램을 개발하는 데 사용할 수 있습니다.그 구문은 대부분 해스켈의 구문과 비슷하다.또한 행 다형성과 확장 가능한 레코드를 [2]도입합니다.또한 Haskell과 달리 PureScript는 엄격한 평가 전략을 고수합니다.
역사
PureScript는 필 프리먼이 2013년에 처음 디자인했습니다.Haskell을 JavaScript로 컴파일하려는 다른 시도(예: Fay, Jush, GHCJS [3]사용)에 만족하지 못했기 때문에 PureScript를 사용하기 시작했습니다.
이후 커뮤니티에 의해 채택되어 GitHub에서 개발되고 있습니다.커뮤니티에 의해 개발된 기타 핵심 툴로는 전용 빌드 툴 "Pulp",[4] 문서 디렉토리 "Pursuit",[5] 패키지 매니저 "Spago"[6] 등이 있습니다.
특징들
PureScript는 엄격한 평가, 지속적인 데이터 구조 및 유형 추론을 특징으로 합니다.PureScript 유형 시스템은 Haskell과 같은 유사한 기능 언어와 많은 특징을 공유합니다: 대수적 데이터 유형 및 패턴 매칭, 상위 종류 유형, 유형 클래스와 함수 종속성, 상위 등급 다형성.PureScript의 유형 시스템은 행 다형성 및 확장 가능한 [7]레코드를 지원합니다.그러나 PureScript는 GADT나 타입 패밀리와 같은 Haskell의 고급 기능을 지원하지 않습니다.
PureScript 컴파일러는 가능한 경우 읽을 수 있는 JavaScript 코드를 생성하려고 합니다.간단한 FFI 인터페이스를 통해 기존 JavaScript [8]코드를 재사용할 수도 있습니다.
PureScript는 증분 컴파일을 지원하며 컴파일러 배포는 반복 [9]개발을 위한 소스 코드 편집기 플러그인 구축을 지원합니다.편집기 플러그인은 Vim, Emacs, Sublime Text, Atom 및 Visual Studio Code를 포함한 많은 인기 텍스트 편집기를 위해 존재합니다.
PureScript는 누락된 하위 [10]표현식으로 프로그램을 구성할 수 있는 유형 홀 기능을 통해 유형 중심 개발을 지원합니다.이후 컴파일러는 누락된 서브 표현의 유형을 추론하여 사용자에게 보고합니다.이 기능을 통해 GHC Haskell [11]컴파일러에서도 유사한 작업을 수행할 수 있게 되었습니다.
예
다음은 PureScript의 최소 "Hello world" 프로그램입니다.
모듈 주된 어디에 수입품 Effect. 콘솔 (로그.) 주된 = 로그. '헬로 월드'
여기서 프로그램의 유형은 PureScript 컴파일러에 의해 추론되고 체크됩니다.같은 프로그램의 보다 상세한 버전에는 명시적인 유형 주석이 포함될 수 있습니다.
모듈 주된 어디에 수입품 서곡 수입품 영향 (영향) 수입품 Effect. 콘솔 (로그.) 주된 :: 영향 구성 단위 주된 = 로그. '헬로 월드'
「 」를 참조해 주세요.
- Elm(프로그래밍 언어) – 기능 프로그래밍 언어
- 이유(프로그래밍 언어)
- JS++ – 웹 프로그래밍 언어
- TypeScript – JavaScript의 프로그래밍 언어 및 슈퍼셋
레퍼런스
- ^ "purescript/purescript". GitHub. 3 June 2022.
- ^ "PureScript". www.purescript.org. Retrieved 2019-03-14.
- ^ "Read PureScript by Example Leanpub". leanpub.com. Retrieved 2019-03-14.
- ^ A build tool for PureScript projects, PureScript Contrib, 2019-03-08, retrieved 2019-03-14
- ^ "Pursuit". pursuit.purescript.org. Retrieved 2019-03-14.
- ^ 🍝 PureScript package manager and build tool powered by Dhall and package-sets: spacchetti/spago, spacchetti, 2019-03-14, retrieved 2019-03-14
- ^ Documentation for the PureScript language, compiler, and tools.: purescript/documentation, PureScript, 2019-03-14, retrieved 2019-03-14
- ^ Documentation for the PureScript language, compiler, and tools.: purescript/documentation, PureScript, 2019-03-14, retrieved 2019-03-14
- ^ purs ide: Editor and tooling support for the PureScript programming language, 2019-04-21, retrieved 2019-04-21
- ^ Implementing type directed search for PureScript, 2016-10-27
- ^ Matthías Páll Gissurarson (2018-09-27), "Suggesting Valid Hole Fits for Typed-Holes (Experience Report)", ACM SIGPLAN Notices, 53 (7): 179–185, doi:10.1145/3299711.3242760, S2CID 218480974