跳至內容

Joy語言

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 21:13 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

Joy 程式語言是澳大利亞樂卓博大學 Manfred von Thun 創立的純函式語言程式設計語言。Joy 因為了函式複合而非 lambda 表達式。伊表現出仝三空年前出現的 Forth 語言的足濟類似性,這不歸結成設計的原因是某一種平行的演化佮趨同。伊閣去受著 John Backus 的 FP 語言的函式級編程風格的影響。

工作機理

Joy 是無這个尋常的(除了函式級編程語言佮某一寡僫捌語言若 unlambda 以外), 佇咧欠缺 lambda 算子,就按呢欠缺形式參數。欲通過定定見例來說明,平方函式咧講令式程式語言(C 語言)中定義如下:

變數 ` x ` 是形式參數,伊咧函式莫呼叫時被替換做愛計算平方的實際值。咧函數式的語言(Scheme 語言)著這个函式會當定義為:

佇足濟方面有所無仝,但是猶原用仝款的方式咧使用形式參數 ` x `。佇咧 Joy 中平方函式定義為:

佇咧 Joy 中,所有的物件攏是對堆疊中取得實際參數閣向堆疊轉去結果的函式。比如講,數值五無表示整數常數,轉到共五壓入棧頂的一个短坎站。

  • ` dup ` 算子通過棧頂元素的副本若簡單的複製伊。
  • ` * ` 算銃子出棧頂的兩个元素並共𪜶的乘積壓入棧頂。

所以平方函式複製棧頂元素,來共棧頂兩个元素相乘,共上蓋初棧頂元素的平方留佇咧棧頂懸,這个過程毋免形式參數。這會使 Joy 足簡明的,如下面快速排序定義所展示的:

` binrec ` 是 Joy 的濟个交迴組合子之一,實現兩箍遞迴。伊預期佇棧頂懸有四个參照的程式,分別表示:

  • 終止條件(若講這个列表是「細」的(一抑是零个元素)則伊已經照排好勢矣),
  • 若到尾仔條件滿足做啥(遮啥物攏無愛做),
  • 預設做啥物(通過較逐个元素佇基準元素若欲列表分解做兩个半份列表), 閣有最後的
  • 煞的時陣做啥(佇兩排好序的半份列表間插入基準的元素)。

數學純粹性

佇咧 Joy 中,含義函式是對語法細漢半陣到語意細漢半陣的同態。就是講乎,符號的串接的語法關係直接對映成函式的複合的語意關係上。這是仝態的非同構,因為這是滿射而非雙射;就是講乎,無符號有加於一个含義,但是某一寡符號序列有仝款的含義(比如講 ` dup + ` 和 ` 二 * `)。

Joy 是串接程式的語言:「 兩个程式的串接指示這兩个程式指示的函式的複合」。

伊的庫定式鏡親像 ISO C 的庫常式,就算講伊進前實現袂使用 C 寫的函式輕易擴充。

參見

  • 串接程式語言

參照

外部連結

  • Official Joy Programming Language Website ( La Trobe University )
  • Joy homepage mirror
  • Freneger , Paul . The JOY of forth . ACM SIGPLAN Notices . August 兩千空三 ,三十八( 八 ) .
  • von Thun , Manfred ; Thomas , Reuben . Joy : Forth’s Functional Cousin ( PDF ) . Proceedings of the 十七 th EuroForth Conference . October 九 , 兩千空一 [二千空二十五四抹二十] .(原始內容存檔 ( PDF ) 佇二千空一十九孵十一孵四).
  • Christopher Diggins . What is a Concatenative Language . Dr . Dobbs . December 三十一 , 兩千空八 [二千空二十五四抹二十] .(原始內容存檔佇兩千空一十二岫五五十四).
  • Apter , Stevan . Functional Programming in Joy and K . Vector . [二千空一十一孵二孵二十八] .(原始內容存檔佇兩千空八堵八堵二十八).
  • mjoy , an interpreter in Delphi for machine drawing ( Subset of Joy )