簡潔之美 / The Beauty of Conciseness
文言以簡馭繁,一字千金。程式之道亦然:簡潔、精確、優雅。古典漢語之凝練特質,恰與編程語言之設計哲學相合,使代碼如詩賦般雅致而有力。
Classical Chinese achieves complexity through simplicity, where each character carries profound meaning. This mirrors the essence of programming: concise, precise, and elegant. The condensed nature of Classical Chinese perfectly aligns with programming language design philosophy, making code as refined and powerful as classical poetry.
文言者,Raku程式語言之古典漢語模組也。以傳統漢字書寫程式,承古典文學之雅韻,融現代編程之精髓。
This module provides Classical Chinese (文言) language support for Raku, allowing you to write Raku programs using Classical Chinese characters, functions, and operators. It enables literary programming in the traditional written language of ancient China.
程式之道,源遠流長。今以文言為程式語言,蓋欲:
- 承古典文化之精華
- 示編程藝術之雅趣
- 融東西文明之智慧
- 啟後學編程之新徑
The art of programming has deep roots. By using Classical Chinese for programming, we aim to:
- Preserve the essence of classical culture
- Demonstrate the elegance of programming as an art form
- Merge Eastern and Western intellectual traditions
- Open new paths for learning programming
zef install 文言
或從源碼安裝 / Or from source:
zef install .
use 文言;
# 示文輸出
言("天地玄黃,宇宙洪荒");
# 變數與問答
my $姓名 = 問("子何名焉?");
言("善哉,$姓名!");
# 數術運算
my @數列 = 一..十;
言("其和為:", 求和(@數列));
言("其均為:", 平均(@數列));
# 文言運算符
my $結果 = 五 加 三 乘 二;
言("五加三乘二,得", $結果);
言
- 輸出並換行 (say)印
- 輸出不換行 (print)問
- 詢問使用者 (prompt)讀
- 讀取一行 (get)警
- 示警 (warn)
真
- True偽
- False無
- Nil無窮
/無限大
- Infinity圓周率
/π
- Pi自然常數
/e
- Euler's number
求和(@數列)
- 求陣列之和求積(@數列)
- 求陣列之積平均(@數列)
- 求平均值最小(@數列)
- 求最小值最大(@數列)
- 求最大值開方($數)
- 求平方根冪($底, $指)
- 求冪次正弦($角)
,餘弦($角)
,正切($角)
- 三角函數
大寫($文)
- 轉為大寫小寫($文)
- 轉為小寫修剪($文)
- 去除首尾空白長度($文)
- 求字串長度含($文, $字)
- 檢查是否包含替換($文, $舊, $新)
- 替換文字分割($文, $符)
- 分割字串連接(@文, $符)
- 連接字串
計數(@列)
- 計算元素數首(@列)
- 取首元素末(@列)
- 取末元素排序(@列)
- 排序元素倒序(@列)
- 反轉順序映射(&函數, @列)
- 映射函數至每元素過濾(&條件, @列)
- 篩選符合條件者去重(@列)
- 去除重複
加
- 加法 (+)減
- 減法 (-)乘
- 乘法 (*)除
- 除法 (/)餘
- 取餘 (%)冪
- 次方 (**)
等
- 等於 (==)不等
- 不等於 (!=)大於
- 大於 (>)小於
- 小於 (<)大於等於
- 大於等於 (>=)小於等於
- 小於等於 (<=)
和
/且
- 邏輯與 (&&)或
- 邏輯或 (||)非
- 邏輯非 (!)
use 文言;
my $詩句 = "床前明月光,疑是地上霜";
my @字 = 字符列表($詩句);
言("詩句:$詩句");
言("字數:", 計數(@字));
言("含'月'字:", 含($詩句, "月") ?? "然" !! "否");
use 文言;
# 求一至百之和
my $和 = 求和(一..百);
言("一至百之和:", $和);
# 驗證勾股定理
my $甲 = 三;
my $乙 = 四;
my $丙 = 開方($甲 冪 二 加 $乙 冪 二);
言("勾三股四,弦", $丙);
use 文言;
my $文章 = "道可道,非常道。名可名,非常名。";
my @句 = 分割($文章, "。");
言("文章:", $文章);
言("句數:", 計數(@句));
遍歷(@句, {
若(
{ 長度($_) > 0 },
{ 言(" 句:", $_) }
);
});
本模組含豐富示例,分為四類:
01-learning-numbers.raku
- 數學啟蒙02-text-analysis.raku
- 文本分析03-algorithm-basics.raku
- 算法基礎
01-calculator.raku
- 計算器02-file-operations.raku
- 文件操作03-data-processor.raku
- 數據處理
01-concurrent-programming.raku
- 並發編程02-metaprogramming.raku
- 元編程03-functional-programming.raku
- 函數式編程
01-poetry-analysis.raku
- 詩詞分析02-idiom-study.raku
- 成語研究03-classic-text-processing.raku
- 古籍處理
因 Raku 現有限制(issue #2404),本模組未能改變核心語法結構。然所有函數與運算符皆可正常使用,足以文言撰寫完整程式。
Due to current Raku limitations (issue #2404), this module cannot modify core syntax structures. However, all functions and operators work correctly, enabling complete programs in Classical Chinese.
以文言編程,非僅技術之事,亦文化傳承之道也。程式碼如詩詞,邏輯如哲理,使編程成為一種文學藝術。
Programming in Classical Chinese is not merely a technical exercise but a means of cultural preservation. Code becomes poetry, logic becomes philosophy, transforming programming into a literary art.
https://github.com/raku-multilingual/raku-classical-chinese
Artistic License 2.0
Danslav Slavenskoj