<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=PureScript</id>
	<title>PureScript - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=PureScript"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=PureScript&amp;action=history"/>
	<updated>2026-06-26T16:23:25Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=PureScript&amp;diff=3611335&amp;oldid=prev</id>
		<title>imported&gt;Mhss：​/* 参见 */</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=PureScript&amp;diff=3611335&amp;oldid=prev"/>
		<updated>2026-03-26T05:54:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;参见&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox programming language&lt;br /&gt;
| name = PureScript&lt;br /&gt;
| logo = PureScript Logo.png&lt;br /&gt;
| logo size = 160px&lt;br /&gt;
| paradigm = [[函数式编程|函数式]]&lt;br /&gt;
| year = {{Start date and age|2013}}&lt;br /&gt;
| latest release version = 0.14.9&lt;br /&gt;
| latest release date = {{Start date and age|2022|04|02}}&lt;br /&gt;
| influenced_by = [[Haskell]], [[JavaScript]]&lt;br /&gt;
| typing = [[类型推论]], [[静态类型|静态]], [[强类型]]&lt;br /&gt;
| designer = Phil Freeman&lt;br /&gt;
| website = [http://www.purescript.org www.purescript.org]&lt;br /&gt;
| license = 三条款[[BSD许可证]]&amp;lt;ref name=license&amp;gt;{{cite web|url=https://github.com/purescript/purescript/blob/master/LICENSE|title=purescript/purescript|website=GitHub|access-date=2021-02-14|archive-date=2021-04-25|archive-url=https://web.archive.org/web/20210425194249/https://github.com/purescript/purescript/blob/master/LICENSE}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| file_ext = .purs&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PureScript&amp;#039;&amp;#039;&amp;#039;是一种[[强类型]]、[[纯函数式编程|纯函数式]]、最终[[编译]]为[[JavaScript]]的[[编程语言]]。PureScript可以开发[[网络应用程序]]、服务端应用程序，也可以借助[[Electron]]开发桌面应用程序。其语法大多与[[Haskell]]相当&amp;lt;ref&amp;gt;{{cite web |url=https://arow.info/blog/posts/2015-12-17-purescript-intro.html |title=PureScript for the Haskeller － Where to get started in PureScript for the Haskell programmer |access-date=2021-02-28 |archive-date=2020-11-08 |archive-url=https://web.archive.org/web/20201108125108/https://arow.info/blog/posts/2015-12-17-purescript-intro.html }}&amp;lt;/ref&amp;gt;。此外，它还引入了行多态性和可扩展记录。&amp;lt;ref&amp;gt;{{Cite web|url=http://www.purescript.org/|title=PureScript|website=www.purescript.org|access-date=2019-03-14|archive-date=2021-02-05|archive-url=https://web.archive.org/web/20210205133948/https://www.purescript.org/|dead-url=no}}&amp;lt;/ref&amp;gt;不过，与Haskell相反的是，PureScript坚持严格[[求值策略]]。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
PureScript最初由费尔·弗里曼在2013年设计&amp;lt;ref&amp;gt;{{cite web |url=https://survivejs.com/blog/purescript-interview/ |title=PureScript - Strongly Typed Programming Language Compiling to JavaScript - Interview with Phil Freeman |access-date=2021-02-28 |archive-date=2021-01-18 |archive-url=https://web.archive.org/web/20210118011336/https://survivejs.com/blog/purescript-interview/ }}&amp;lt;/ref&amp;gt;。他曾屡次尝试在保留語義的情況下，将Haskell编译成JavaScript（如使用Fay、Haste或GHCJS&amp;lt;ref&amp;gt;{{cite web|url=https://wiki.haskell.org/The_JavaScript_Problem|title=The JavaScript Problem|access-date=2021-02-28|archive-date=2020-12-09|archive-url=https://web.archive.org/web/20201209014541/https://wiki.haskell.org/The_JavaScript_Problem}}&amp;lt;/ref&amp;gt;），但结果并不满意，於是他开始着手在PureScript上工作。&amp;lt;ref&amp;gt;{{Cite web|url=https://leanpub.com/purescript/read#leanpub-auto-about-the-author|title=Read PureScript by Example {{!}} Leanpub|website=leanpub.com|access-date=2019-03-14|archive-date=2020-11-29|archive-url=https://web.archive.org/web/20201129082048/https://leanpub.com/purescript/read#leanpub-auto-about-the-author|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
从此以后它由社区接手并在[[GitHub]]继续开发&amp;lt;ref&amp;gt;{{cite web|url=https://project-awesome.org/passy/awesome-purescript|title=awesome-purescript|access-date=2021-02-28|archive-date=2021-11-21|archive-url=https://web.archive.org/web/20211121230617/https://project-awesome.org/passy/awesome-purescript}}&amp;lt;/ref&amp;gt;。社区开发的额外核心工具包括专门的构建工具Pulp&amp;lt;ref&amp;gt;{{Citation|title=A build tool for PureScript projects|date=2019-03-08|url=https://github.com/purescript-contrib/pulp|publisher=PureScript Contrib|access-date=2019-03-14|archive-date=2020-12-05|archive-url=https://web.archive.org/web/20201205183435/https://github.com/purescript-contrib/pulp/}}&amp;lt;/ref&amp;gt;、文档目录Pursuit&amp;lt;ref&amp;gt;{{Cite web|url=https://pursuit.purescript.org/|title=Pursuit|website=pursuit.purescript.org|access-date=2019-03-14|archive-date=2021-03-01|archive-url=https://web.archive.org/web/20210301125110/https://pursuit.purescript.org/}}&amp;lt;/ref&amp;gt;和包管理器Spago&amp;lt;ref&amp;gt;{{Citation|title=🍝 PureScript package manager and build tool powered by Dhall and package-sets: spacchetti/spago|date=2019-03-14|url=https://github.com/spacchetti/spago|publisher=spacchetti|access-date=2019-03-14}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
PureScript特征主要为[[及早求值|严格求值]]、[[持久性数据结构]]和[[类型推论]]。PureScript的类型系统同类似的函数式语言如[[Haskell]]共享了很特征：[[代数数据类型]]及[[模式匹配]]、{{le|种类 (类型论)|Kind (type theory)|高种类类型}}、[[类型类]]及[[类型类#函数依赖|函数依赖]]和[[参数多态|高秩多态]]。PureScript的类型系统增加了对{{le|行多态|Row polymorphism}}和可扩展记录的支持&amp;lt;ref name=&amp;quot;#1&amp;quot;&amp;gt;{{Citation|title=Documentation for the PureScript language, compiler, and tools.: purescript/documentation|date=2019-03-14|url=https://github.com/purescript/documentation|publisher=PureScript|access-date=2019-03-14|archive-date=2021-04-25|archive-url=https://web.archive.org/web/20210425194808/https://github.com/purescript/documentation}}&amp;lt;/ref&amp;gt;。但是，PureScript缺乏对[[Haskell]]的某些更高级特征如{{le|广义代数数据类型|Generalized algebraic data type|GADT}}和{{le|类型家族|Type family}}的支持。&lt;br /&gt;
&lt;br /&gt;
PureScript编译器尝试产生尽可能可读的JavaScript代码。通过一个简单的{{le|外界函数接口|Foreign function interface|FFI接口}}，它还允许重用现存的JavaScript代码&amp;lt;ref name=&amp;quot;#1&amp;quot;/&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
PureScript支持[[增量编译器|增量编译]]，而且编译器发行包括了支持为迭代开发建造[[源代码编辑器]]插件&amp;lt;ref&amp;gt;{{Citation|title=purs ide: Editor and tooling support for the PureScript programming language|date=2019-04-21|url=https://github.com/purescript/purescript/tree/dfbd19da85c92d82ed4c3184f950f74da5332e3f/psc-ide|access-date=2019-04-21}}&amp;lt;/ref&amp;gt;。存在编辑器插件针对很多流行的编辑器，包括[[Vim]]、[[Emacs]]、[[Sublime Text]]、[[Atom (文字编辑器)|Atom]]和[[Visual Studio Code]]。&lt;br /&gt;
&lt;br /&gt;
PureScript通过它的“类型孔洞”特征支持“类型驱动开发”&amp;lt;ref&amp;gt;{{Citation|title=Implementing type directed search for PureScript|date=2016-10-27}}&amp;lt;/ref&amp;gt;，在其中可以构造具有缺失子表达式的程序。编译器随后将尝试推论出缺失子表达式的类型，并将这些类型报告给用户。这个特征已经启发了[[GHC]]的类似工作&amp;lt;ref&amp;gt;{{Citation|title=Suggesting Valid Hole Fits for Typed-Holes (Experience Report)|date=2018-09-27|url=https://dl.acm.org/citation.cfm?id=3242760|author=Matthías Páll Gissurarson}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 示例 ==&lt;br /&gt;
一个最精简的[[Hello world]]程序如下：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
module Main where&lt;br /&gt;
&lt;br /&gt;
import Effect.Console (log)&lt;br /&gt;
&lt;br /&gt;
main = log &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在这里，程序的类型是由PureScript编译器推论出并检查。相同程序的更冗长版本可以包括显式的类型标注：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
module Main where&lt;br /&gt;
&lt;br /&gt;
import Prelude&lt;br /&gt;
&lt;br /&gt;
import Effect (Effect)&lt;br /&gt;
import Effect.Console (log)&lt;br /&gt;
&lt;br /&gt;
main :: Effect Unit&lt;br /&gt;
main = log &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参见 ==&lt;br /&gt;
* [[Elm (编程语言)|Elm]]——一种领域特定编程语言，用于声明式创建基于[[网页浏览器]]的图形用户界面。&lt;br /&gt;
* [[Reason (编程语言)|Reason]]——[[OCaml]]的语法扩展和工具链，也可以转译成JavaScript。&lt;br /&gt;
* {{en-link|JS++}}。&lt;br /&gt;
* [[TypeScript]]。&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [http://www.purescript.org Official website] {{Wayback|url=http://www.purescript.org/ |date=20210205133948 }}&lt;br /&gt;
* [https://app.qvault.io/playground/purescript PureScript Playground] {{Wayback|url=https://app.qvault.io/playground/purescript |date=20201011214915 }}&lt;br /&gt;
&lt;br /&gt;
{{程序设计语言}}&lt;br /&gt;
{{JavaScript}}&lt;br /&gt;
{{ECMAScript}}&lt;br /&gt;
&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
[[Category:函数式编程语言]]&lt;br /&gt;
[[Category:模式匹配编程语言]]&lt;br /&gt;
[[Category:2013年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Mhss</name></author>
	</entry>
</feed>