Loading AI tools
一个強型別、純函數式、最終編譯為JavaScript的程式語言 来自维基百科,自由的百科全书
PureScript是一種強類型、純函數式、最終編譯為JavaScript的程式語言。PureScript可以開發網絡應用程式、服務端應用程式,也可以藉助Electron開發桌面應用程式。其語法大多與Haskell相當[3]。此外,它還引入了行多態性和可擴展記錄。[4]不過,與Haskell相反的是,PureScript堅持嚴格求值策略。
PureScript最初由費爾·弗里曼在2013年設計[5]。他曾屢次嘗試在保留語義的情況下,將Haskell編譯成JavaScript(如使用Fay、Haste或GHCJS[6]),但結果並不滿意,於是他開始着手在PureScript上工作。[7]
從此以後它由社區接手並在GitHub繼續開發[8]。社區開發的額外核心工具包括專門的構建工具Pulp[9]、文檔目錄Pursuit[10]和包管理器Spago[11]。
PureScript特徵主要為嚴格求值、持久性數據結構和類型推論。PureScript的類型系統同類似的函數式語言如Haskell共享了很特徵:代數數據類型及模式匹配、高種類類型、類型類及函數依賴和高秩多態。PureScript的類型系統增加了對行多態和可擴展記錄的支持[12]。但是,PureScript缺乏對Haskell的某些更高級特徵如GADT和類型家族的支持。
PureScript編譯器嘗試產生儘可能可讀的JavaScript代碼。通過一個簡單的FFI接口,它還允許重用現存的JavaScript代碼[12]。
PureScript支持增量編譯,而且編譯器發行包括了支持為迭代開發建造原始碼編輯器插件[13]。存在編輯器插件針對很多流行的編輯器,包括Vim、Emacs、Sublime Text、Atom和Visual 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!"
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.