国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[譯] PureScript: 一門編譯到 JavaScript 的 Haskell 方言

陳江龍 / 2044人閱讀

摘要:原文是一門編譯到的強類型靜態類型語言它的功能受到的激發并且使用編寫其目標是編譯到同時保持清潔跟可讀而且根據作者所說具備跟其他編譯到的語言相互操作的能力繼承了當中一些突出的功能其中有類型推斷允許在任何可能的地方減少類型聲明的書寫一種類型構

原文: http://www.infoq.com/news/2014/09/purescript-haskell-javascript

PureScript 是一門編譯到 JavaScript 的強類型靜態類型語言.
它的功能受到 Haskell 的激發, 并且使用 Haskell 編寫, 其目標是:
"編譯到 JavaScript 同時保持清潔跟可讀" 而且根據 PureScript 作者 Phil Freeman 所說,
PureScript 具備跟其他編譯到 JavaScript 的語言相互操作的能力.

PureScript 繼承了 Haskell 當中一些突出的功能, 其中有:

類型推斷: 允許在任何可能的地方減少類型聲明的書寫

Higher Kinded Polymorphism: 一種類型構造器之上的抽象機制,
是 Monads 跟 DSLs 的基礎

模式匹配: 這種技術讓開發者可以通過將函數實現拆分成多個 case
來寫簡潔而復雜的函數

類型類: 數據類型之上的抽象機制, 允許開發者在使用時不去思考本身數據結構

根據 Phil 所說, 互操作性是 PureScript 的另一個優勢.
PureScript 提供了引用已有的 JavaScript 代碼機制,
通過提供其數據和函數的類型, 然后作為正常的 PureScript 代碼使用.
這樣 PureScript 就有可能在應用的局部使用, 項目本身可以是 JavaScript 或者其方言.

InfoQ 跟 Phil Freeman 做了訪談來深入了解這門語言:

可以解釋一下為什么你要創造 PureScript 嗎? 主要的動機和目標是什么?

  

我是一年前開始 PureScript 項目的, 那時我在進行一個中等的 JavaScript 應用,
那個項目后來用 TypeScript 重寫了. 用 TypeScript 很多時候生成力是很高的
只是應用中一小部分我覺得用強類型系統會帶來更多的好處.
那時已經有很多編程語言提供了很有表達能力的類型系統,
可是, 沒有一個同時能結合我想要的其他功能一起使用.
更準確地說, 我想要一門 Haskell 語法的語言, 能生成干凈可讀的 JavaScript,
只是不需要 Haskell 那樣一個運行環境.
我知到如果我開始自己寫編譯器的話后面我就是要在 Haskell 設計這門語言,
但是我決定了, 只想要 Haskell 當中簡單的部分來實現 PureScript,
因為我想要吸引更多的編譯器開發者.
考慮這一點, 這個項目已經成功了, 因為編譯器現在有了很棒的開發者社區.

PureScript 的主要功能是什么?

  

一套簡單的 FFI, 表達能力強的類型系統, 有規律的生成代碼.
簡單說就是 PureScript 提供了"更好的環境的寫有規則的 JavaScript"

能不能總結下 PureScript 帶來的比原生 JavaScript 好的地方?

  

一個巨大的好處是因此能夠自信地重構巨大的代碼庫而不破壞已有的功能.
當你決定使用純函數式編程之后 - 純函數, 不可變數據類型, 明確的副作用, 這些
你就可以在編譯器的協助下強力地重構你的代碼.
另一個好處是類型系統的表達能力, 能開發者能更多屬性的斷言,
這在目前單純 JavaScript 的工具來說是難以做到的.
比如說構造 DSL 讓它的數據類型在結構上就保證正確,
比如: 二叉樹被保證是平衡的, HTML 節點保證有正確的屬性, 等等
同時這可以是一套漸變的方案, 不需要依賴特定的 IDE.
最終 PureScript 這樣的語言實現了強大的抽象能力, 其他語言無法達到,
包括參數化的多態(?parametric polymorphism), 高階函數, 類型類等等工具.

PureScript 集成了 Haskell 當中一些功能, 比如類型推斷, 類型類等等
這兩門語言差別最大是在哪里?

  

簡單說 PureScript 選用了 Haskell 的語法, 但在語意方面源自 JavaScript.
比如 PureScript 是非惰性求值的, 這個就不像 Haskell.
還有 PureScript 只是在單根函數的層面進行了尾遞歸優化,
就有必要注意 Haskell 常用風格在這里會棧溢出(比如 monadic recursion).
類型系統中也有一些重要的去寫.
PureScript 受 Haskell 影響有一些不錯的功能(比如多參數類型類, rank-N types),
但也有很多 Haskell 功能我們是沒有的(type families, polykinds, datakinds 等等).
也有些新奇功能是 PureScript 有但 Haskell 沒的(extensible records 和 extensible effects)

你怎么對比 PureScript 和其他 Haskell 編譯 JavaScript 方言, 比如 UHC, ghcjs?

  

很多 Haskell 類的 Altjs 語言, 比如 Fay, Haste, GHCJS,
它們希望的是編譯 Haskell 的子集到 JavaScript, 保留 Haskell 的語義.
這個想法很棒, 因為有大量的 Haskell 代碼那樣就能在 JavaScript 代碼中重用.
PureScript 不是 Haskell 的子集, 而是采用了 JavaScript 的語義.
不過好處是 PureScript 的 FFI 很好用, 我們很容易集成已有的 JavaScript 模塊.
比如說那些 npm 當中已經提供了的模塊. 這帶來了不一樣的開發模式.
PureScript 內在當中更接近 Roy 或者 JMacro 這樣的語言.
實際上 Roy 很大地影響了 PureScript 的設計.
Elm 是另一個有趣的 Haskell 方言.
Elm 主要是實現了純函數編程, 以及 FRP, 用來實現交互式的 Web 應用.

能簡短分享一下 PureScript 未來的想法嗎? roadmap 上有什么?

  

我們目前專注于發布下一版的編譯器管工具,
希望能包含二進制發布文件, 針對三個主要的平臺.
我們也花了不少時間開發一個自舉的 PureScript 編譯器.
如果能用 npm install purescript 安裝編譯器就很贊了.
下一個版本之后, 我們就能考慮一下很多有意思的功能, 比如:
type wildcards, 模版元編程, idiom brackets 還有 sourceMaps.
還有一些興趣在于不同的編譯器后端, 加上最近的 Lua 后端,
也有一些討論是關于可能會有的 Python 后端的.
當然, 我們也不缺各種有趣的類庫跟工具去寫. 開發者社區很熱情,
任何有興趣貢獻的人都可以看我們 Freenode 上的 #purescript 頻道.

PureScript 是個開源項目, 預編譯的二進制文件也支持 Linux.
兩份適合開始學習這門語言的資源是Phil Freeman 寫的Leanpub 的電子書,
還有網頁版的 Try PureScript, 不用安裝就可以嘗試這門語言.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85599.html

相關文章

  • gitbook: 前端好書推薦

    摘要:它大致概述并討論了前端工程的實踐如何學習它,以及在年實踐時使用什么工具。目的是每年發布一次內容更新。前端實踐第一部分廣泛描述了前端工程的實踐。對大多數人來說,函數式編程看起來更加自然。 1 Front-End Developer Handbook 2017 地址:https://frontendmasters.com/b... 這是任何人都可以用來了解前端開發實踐的指南。它大致概述并...

    Ali_ 評論0 收藏0
  • gitbook: 前端好書推薦

    摘要:它大致概述并討論了前端工程的實踐如何學習它,以及在年實踐時使用什么工具。目的是每年發布一次內容更新。前端實踐第一部分廣泛描述了前端工程的實踐。對大多數人來說,函數式編程看起來更加自然。 1 Front-End Developer Handbook 2017 地址:https://frontendmasters.com/b... 這是任何人都可以用來了解前端開發實踐的指南。它大致概述并...

    CocoaChina 評論0 收藏0
  • gitbook: 前端好書推薦

    摘要:它大致概述并討論了前端工程的實踐如何學習它,以及在年實踐時使用什么工具。目的是每年發布一次內容更新。前端實踐第一部分廣泛描述了前端工程的實踐。對大多數人來說,函數式編程看起來更加自然。 1 Front-End Developer Handbook 2017 地址:https://frontendmasters.com/b... 這是任何人都可以用來了解前端開發實踐的指南。它大致概述并...

    Warren 評論0 收藏0
  • 2017值得一瞥JavaScript相關技術趨勢

    摘要:值得一瞥的相關技術趨勢從屬于筆者的前端入門與工程實踐,推薦閱讀我的前端之路工具化與工程化獲得更多關于年前端總結。的不少開發者都是的粉絲,他們的以及都是基于構建的。 2017值得一瞥的JavaScript相關技術趨勢從屬于筆者的Web 前端入門與工程實踐,推薦閱讀2016-我的前端之路:工具化與工程化獲得更多關于2016年前端總結。本文主要內容翻譯自,筆者對于每個條目進行了些許完善。本文...

    davidac 評論0 收藏0
  • [] Focal:類型安全、表達力強、可組合狀態管理方案

    摘要:致力于為應用提供一個類型安全表達力強可組合的狀態管理方案。是一組的命名空間。是內置組件的鏡像,但允許組件的額外接受類型的數據。這次內容更新,是由組件處理的。這些小的組件不必知道所有的應用狀態數據。這是因為大部分對的研究來自于。 Focal Focal 致力于為 React 應用提供一個類型安全、表達力強、可組合的狀態管理方案。 用一個不可變的 (immutable) 、響應式的 (o...

    suemi 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<