文言 - Classical Chinese Language Module for Raku
簡潔之美 / 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.
緣起 / Motivation
程式之道,源遠流長。今以文言為程式語言,蓋欲:
- 承古典文化之精華
- 示編程藝術之雅趣
- 融東西文明之智慧
- 啟後學編程之新徑
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
安裝法 / Installation
zef install 文言
或從源碼安裝 / Or from source:
zef install .
基本用法 / Basic Usage
use 文言;
# 示文輸出
言("天地玄黃,宇宙洪荒");
# 變數與問答
my $姓名 = 問("子何名焉?");
言("善哉,$姓名!");
# 數術運算
my @數列 = 一..十;
言("其和為:", 求和(@數列));
言("其均為:", 平均(@數列));
# 文言運算符
my $結果 = 五 加 三 乘 二;
言("五加三乘二,得", $結果);
功能特色 / Features
基本輸入輸出 / Basic I/O
言
- 輸出並換行 (say)印
- 輸出不換行 (print)問
- 詢問使用者 (prompt)讀
- 讀取一行 (get)警
- 示警 (warn)
常數 / Constants
真
- True偽
- False無
- Nil無窮
/ 無限大
- Infinity圓周率
/ π
- Pi自然常數
/ e
- Euler's number
數學函數 / Mathematical Functions
求和(@數列)
- 求陣列之和求積(@數列)
- 求陣列之積平均(@數列)
- 求平均值最小(@數列)
- 求最小值最大(@數列)
- 求最大值開方($數)
- 求平方根冪($底, $指)
- 求冪次正弦($角)
, 餘弦($角)
, 正切($角)
- 三角函數
文字處理 / String Functions
大寫($文)
- 轉為大寫小寫($文)
- 轉為小寫修剪($文)
- 去除首尾空白長度($文)
- 求字串長度含($文, $字)
- 檢查是否包含替換($文, $舊, $新)
- 替換文字分割($文, $符)
- 分割字串連接(@文, $符)
- 連接字串
陣列處理 / Array Functions
計數(@列)
- 計算元素數首(@列)
- 取首元素末(@列)
- 取末元素排序(@列)
- 排序元素倒序(@列)
- 反轉順序映射(&函數, @列)
- 映射函數至每元素過濾(&條件, @列)
- 篩選符合條件者去重(@列)
- 去除重複
文言運算符 / Classical Operators
算術 / Arithmetic
加
- 加法 (+)減
- 減法 (-)乘
- 乘法 (*)除
- 除法 (/)餘
- 取餘 (%)冪
- 次方 (**)
比較 / Comparison
等
- 等於 (==)不等
- 不等於 (!=)大於
- 大於 (>)小於
- 小於 (<)大於等於
- 大於等於 (>=)小於等於
- 小於等於 (<=)
邏輯 / Logical
和
/ 且
- 邏輯與 (&&)或
- 邏輯或 (||)非
- 邏輯非 (!)
範例集 / Examples
詩詞韻律分析 / Poetry Analysis
use 文言;
my $詩句 = "床前明月光,疑是地上霜";
my @字 = 字符列表($詩句);
言("詩句:$詩句");
言("字數:", 計數(@字));
言("含'月'字:", 含($詩句, "月") ?? "然" !! "否");
算學示例 / Mathematical Example
use 文言;
# 求一至百之和
my $和 = 求和(一..百);
言("一至百之和:", $和);
# 驗證勾股定理
my $甲 = 三;
my $乙 = 四;
my $丙 = 開方($甲 冪 二 加 $乙 冪 二);
言("勾三股四,弦", $丙);
文本處理 / Text Processing
use 文言;
my $文章 = "道可道,非常道。名可名,非常名。";
my @句 = 分割($文章, "。");
言("文章:", $文章);
言("句數:", 計數(@句));
遍歷(@句, {
若(
{ 長度($_) > 0 },
{ 言(" 句:", $_) }
);
});
示例程式 / Example Programs
本模組含豐富示例,分為四類:
教育範例 / Educational Examples
01-learning-numbers.raku
- 數學啟蒙02-text-analysis.raku
- 文本分析03-algorithm-basics.raku
- 算法基礎
實用範例 / Practical Examples
01-calculator.raku
- 計算器02-file-operations.raku
- 文件操作03-data-processor.raku
- 數據處理
高級範例 / Advanced Examples
01-concurrent-programming.raku
- 並發編程02-metaprogramming.raku
- 元編程03-functional-programming.raku
- 函數式編程
文化範例 / Cultural Examples
01-poetry-analysis.raku
- 詩詞分析02-idiom-study.raku
- 成語研究03-classic-text-processing.raku
- 古籍處理
限制 / Limitations
因 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.
文化意義 / Cultural Significance
以文言編程,非僅技術之事,亦文化傳承之道也。程式碼如詩詞,邏輯如哲理,使編程成為一種文學藝術。
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.
貢獻 / Contributing
https://github.com/raku-multilingual/raku-classical-chinese
授權 / License
Artistic License 2.0
作者 / Author
Danslav Slavenskoj