맨위로가기

퓨어스크립트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의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] 등 핵심 도구를 개발했다.

3. 특징

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

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