日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Pyret編程語言:探索腳本語言和函數(shù)式編程的融合

Pyret 是一門基于 JavaScript 的腳本語言,旨在成為編程教育的絕佳選擇,同時探索腳本語言和函數(shù)式編程的融合。目前 Pyret 正處于積極設(shè)計和開發(fā)階段,開發(fā)者可以自由使用或?qū)ζ溥M行修改。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比榆中網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式榆中網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋榆中地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

Pyret 語法介紹

Pyret 具有受 Python 啟發(fā)的函數(shù)、列表和運算符語法,其迭代結(jié)構(gòu) (Iteration constructs) 的設(shè)計為了調(diào)用其他語言中的迭代結(jié)構(gòu)。

 
 
 
 
  1. fun to-celsius(f):
  2.   (f - 32) * (5 / 9)
  3. end
  4. for each(str from [list: "Ahoy", "world!"]):
  5.   print(str)
  6. end

Pyret 支持簡潔、富有表現(xiàn)力、遞歸的數(shù)據(jù)聲明,支持可選的類型注釋,支持增量添加,以滿足各種教學(xué)風(fēng)格和課程需求。

 
 
 
 
  1. data BinTree:
  2.   | leaf
  3.   | node(value, left :: BinTree, right :: BinTree)
  4. end

Pyret 的測試是編程過程的自然組成部分。函數(shù)可以在where:子句中結(jié)束,該子句為函數(shù)提供了單元測試,并且這些斷言 (Assertions) 會被動態(tài)檢查。

 
 
 
 
  1. fun sum(l):
  2.   cases (List) l:
  3.     | empty => 0
  4.     | link(first, rest) => first + sum(rest)
  5.   end
  6. where:
  7.   sum([list: ]) is 0
  8.   sum([list: 1, 2, 3]) is 6
  9. end

對于縮進的問題,Pyret 團隊認(rèn)為縮進對于代碼的可讀性至關(guān)重要,但他們不希望通過程序的空格來確定其含義。相反,程序的含義應(yīng)該決定它的縮進結(jié)構(gòu)??s進只是另一個上下文敏感的規(guī)則。

明確的語法(Pyret 使用顯式end分隔符的原因)意味著開發(fā)者可以從電子郵件或 Web 復(fù)制和粘貼代碼,而不會改變其含義。IDE 會幫助開發(fā)者重新縮進代碼,無需擔(dān)心這樣做會改變程序的含義。

亮點

注解 (Annotations)

與大多數(shù)腳本編程語言不一樣,Pyret 支持開箱即用地檢查參數(shù)上的注解。

Python

 
 
 
 
  1. def square(n : int) -> int:
  2.   return n * n
  3. square("5")
  4. # Error at multiplication:
  5. # Can't multiply sequence by
  6. # non-int of type 'str'

Pyret

 
 
 
 
  1. fun square(n :: Number) -> Number:
  2.   n * n
  3. end
  4. square("5")
  5. # With type checker off:
  6. # The Number annotation was not
  7. # satisfied by the value "5"
  8. # With type checker on:
  9. # Number is incompatible with String

支持長度較長的數(shù)字類型

Java

 
 
 
 
  1. // this is not true
  2. ((1 / 3) * 3) == 1

Pyret

 
 
 
 
  1. # this is true
  2. ((1 / 3) * 3) == 1

結(jié)構(gòu)化數(shù)據(jù)

Pyret 為編寫數(shù)據(jù)定義提供了優(yōu)雅的機制,而無需開發(fā)者具備對類的認(rèn)知背景,以及語法開銷。

Python

 
 
 
 
  1. class BinTree:
  2.   pass
  3. class leaf(BinTree):
  4.   def __init__(self):
  5.     pass
  6. class node(BinTree):
  7.   def __init__(self, v, l, r):
  8.     self.v = v
  9.     self.l = l
  10.     self.r = r

Pyret

 
 
 
 
  1. data BinTree:
  2.   | leaf
  3.   | node(v, l, r)
  4. end

Pyret 在使用結(jié)構(gòu)化數(shù)據(jù)方面也非常靈活,并在其底層公開了一個簡單的對象模式,支持結(jié)構(gòu)化代碼與更多 nominal 模式搭配使用。

OCaml

 
 
 
 
  1. type animal =
  2.   | Elephant of string * float
  3.   | Tiger of string * float
  4.   | Horse of string * int
  5.   ...
  6. let name_of_animal a =
  7.   match a with
  8.     | Elephant(name, _)
  9.     | Tiger(name, _)
  10.     | Horse(name, _) -> name
  11.     ...

Pyret

 
 
 
 
  1. data Animal:
  2.   | elephant(name, weight)
  3.   | tiger(name, stripes)
  4.   | horse(name, races-won)
  5.   ...
  6. end
  7. fun animal-name(a :: Animal):
  8.   a.name
  9. end

Racket

 
 
 
 
  1. (struct elephant (name weight))
  2. (struct tiger (name stripes))
  3. (struct horse (name races-won))
  4. ...
  5. (define (animal-name a)
  6.   (cond
  7.     [(elephant? a) (elephant-name a)]
  8.     [(tiger? a) (tiger-name a)]
  9.     [(horse? a) (horse-name a)]
  10.     ...))

Pyret

 
 
 
 
  1. data Animal:
  2.   | elephant(name, weight)
  3.   | tiger(name, stripes)
  4.   | horse(name, races-won)
  5.   ...
  6. end
  7. fun animal-name(a :: Animal):
  8.   a.name
  9. end

運行 Pyret

通過訪問 code.pyret.org 直接在瀏覽器中運行 Pyret,這是最簡單的入門方法。查看導(dǎo)覽以了解小部分程序和語法示例。

如果希望在命令行中在使用 Pyret 進行編程,需要從 https://www.npmjs.com/package/pyret-npm 安裝pyret-npm,安裝命令如下:

 
 
 
 
  1. npm install -g pyret-npm

根據(jù) Pyret 的官網(wǎng)介紹,目前該項目正在積極開發(fā)三個非常重要的功能:

  • 支持靜態(tài)類型,提供帶有標(biāo)簽聯(lián)合 (tagged unions) 和類型檢查器的傳統(tǒng)類型系統(tǒng)
  • 使用表作為存儲現(xiàn)實世界數(shù)據(jù)的關(guān)鍵類型
  • 交互式計算模型基于 “world” model

其團隊認(rèn)為 Pyret 也已經(jīng)足夠成熟,因為它實現(xiàn)了自托管編譯器。這意味著,當(dāng)開發(fā)者在瀏覽器中運行 Pyret 時,它會加載實現(xiàn)了 Pyret-to-JavaScript 編譯器的 JavaScript 代碼(即開發(fā)者輸入的 Pyret 代碼會編譯成 JavaScript 并在瀏覽器中運行)。這個編譯器是由 Pyret-to-JavaScript 編譯器通過編譯 Pyret-to-JavaScript 編譯器產(chǎn)生的。

本文轉(zhuǎn)自O(shè)SCHINA

本文標(biāo)題:Pyret 編程語言:探索腳本語言和函數(shù)式編程的融合

本文地址:https://www.oschina.net/news/156822/pyret-language


名稱欄目:Pyret編程語言:探索腳本語言和函數(shù)式編程的融合
本文鏈接:http://m.5511xx.com/article/ccsjhis.html