PureScript

一个強型別、純函數式、最終編譯為JavaScript的程式語言 来自维基百科,自由的百科全书

PureScript

PureScript是一種強類型純函數式、最終編譯JavaScript程式語言。PureScript可以開發網絡應用程式、服務端應用程式,也可以藉助Electron開發桌面應用程式。其語法大多與Haskell相當[3]。此外,它還引入了行多態性和可擴展記錄。[4]不過,與Haskell相反的是,PureScript堅持嚴格求值策略

快速預覽 編程範型, 設計者 ...
PureScript
Thumb
編程範型函數式
設計者Phil Freeman
面市時間2013年,​12年前​(2013
當前版本
  • 0.15.15(2024年2月7日;穩定版本)[1]
編輯維基數據鏈接
型態系統類型推論, 靜態, 強類型
許可證三條款BSD許可證[2]
文件擴展名.purs
網站www.purescript.org
受影響於
Haskell, JavaScript
關閉

歷史

PureScript最初由費爾·弗里曼在2013年設計[5]。他曾屢次嘗試在保留語義的情況下,將Haskell編譯成JavaScript(如使用Fay、Haste或GHCJS[6]),但結果並不滿意,於是他開始著手在PureScript上工作。[7]

從此以後它由社區接手並在GitHub繼續開發[8]。社區開發的額外核心工具包括專門的構建工具Pulp[9]、文檔目錄Pursuit[10]和包管理器Spago[11]

特徵

PureScript特徵主要為嚴格求值持久性資料結構類型推論。PureScript的類型系統同類似的函數式語言如Haskell共享了很特徵:代數數據類型模式匹配高種類類型英語Kind (type theory)類型類函數依賴高秩多態。PureScript的類型系統增加了對行多態英語Row polymorphism和可擴展記錄的支持[12]。但是,PureScript缺乏對Haskell的某些更高級特徵如GADT英語Generalized algebraic data type類型家族英語Type family的支持。

PureScript編譯器嘗試產生儘可能可讀的JavaScript代碼。通過一個簡單的FFI接口英語Foreign function interface,它還允許重用現存的JavaScript代碼[12]

PureScript支持增量編譯,而且編譯器發行包括了支持為迭代開發建造原始碼編輯器插件[13]。存在編輯器插件針對很多流行的編輯器,包括VimEmacsSublime TextAtomVisual Studio Code

PureScript通過它的「類型孔洞」特徵支持「類型驅動開發」[14],在其中可以構造具有缺失子表達式的程序。編譯器隨後將嘗試推論出缺失子表達式的類型,並將這些類型報告給用戶。這個特徵已經啟發了GHC的類似工作[15]

示例

一個最精簡的Hello world程序如下:

module Main where

import Effect.Console (log)

main = log "Hello World!"

在這裡,程序的類型是由PureScript編譯器推論出並檢查。相同程序的更冗長版本可以包括顯式的類型標註:

module Main where

import Prelude

import Effect (Effect)
import Effect.Console (log)

main :: Effect Unit
main = log "Hello World!"

參見

  • Elm——一種領域特定程式語言,用於聲明式創建基於網頁瀏覽器的圖形用戶界面。
  • Reason——OCaml的語法擴展和工具鏈,也可以轉譯成JavaScript。
  • JS++——一個強型別、純函數式、最終編譯為JavaScript的程式語言。
  • TypeScript——程式語言,編譯成JavaScript的JavaScript超集。

引用

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.