맨위로가기

퓨어스크립트

"오늘의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 등으로 확장을 시도했으나 프로젝트는 단종되었다.

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