LIMITATIONS

古典漢語模組限制 / ClassicalChinese Module Limitations

概要 / Summary

本模組為 Raku 提供古典漢語函數和運算符,但由於 Raku 當前限制(issue #2404),無法修改語言的基礎語法。

This module provides Classical Chinese functions and operators for Raku, but cannot modify the fundamental language syntax due to current Raku limitations (issue #2404).

可用功能 / What Works

✅ 翻譯函數 / Translated Functions

  • 超過 200 個函數翻譯為古典漢語

  • 所有數學、字符、列表、輸入輸出等函數

  • 範例:

    言("天下大同");                    # say "世界大同"
    my $和 = 求和([1,2,3,4,5]);       # sum([1,2,3,4,5])
    my $文字 = 大寫("古典");           # uc("古典")

✅ 自定義運算符 / Custom Operators

  • 算術運算符:

  • 比較運算符:不等大於小於大於等於小於等於

  • 邏輯運算符:

  • 字符運算符:連接字符重複字符

  • 範圍運算符:至前

  • 賦值運算符:加等減等乘等除等

重要注意:運算符需要括號來確保優先級:

# 正確
my $結果 = (5 加 3 乘 2);        # (5+3)*2 = 16
my $結果 = (5 加 (3 乘 2));      # 5+(3*2) = 11

# 在條件中
若(($年齡 大於等於 18), { ... });

✅ 常數 / Constants

真          # True
偽          # False
無          # Nil
無窮        # Inf
圓周率 / π  # 3.14159...
自然常數 / e # 2.71828...

✅ 控制流函數 / Control Flow Functions

雖然不能使用古典漢語關鍵字,但提供了函數形式:

# 條件判斷
若(
    { $年齡 大於等於 18 },
    { 言("成年") },
    { 言("未成年") }
);

# 循環
當(
    { $i 小於 10 },
    {
        言($i);
        $i++;
    }
);

# 遍歷
遍歷(@數列, {
    言("數字:$_");
});

# 條件匹配
依據($值, {
    遇("甲", { 言("是甲") });
    遇("乙", { 言("是乙") });
    預設({ 言("其他") });
});

不可用功能 / What Does NOT Work

❌ 語言關鍵字 / Language Keywords

無法翻譯控制結構關鍵字:

# 無法使用:
若 ($x > 5) { ... }         # if
當 ($x < 10) { ... }        # while
為 @列表 { ... }            # for

# 必須使用原始語法:
if ($x > 5) { ... }
while ($x < 10) { ... }
for @列表 { ... }

❌ 變數宣告 / Variable Declaration

# 無法使用:
吾 $變數 = 5;               # my
我等 $共享 = 10;            # our

# 必須使用:
my $變數 = 5;
our $共享 = 10;

❌ 類和方法語法 / Class and Method Syntax

# 無法使用:
類 我類 { ... }             # class
法 函數() { ... }           # method

# 必須使用:
class 我類 { ... }
method 函數() { ... }

❌ 語句修飾符 / Statement Modifiers

# 無法使用:
言("你好") 若 $條件;         # if modifier

# 必須使用:
言("你好") if $條件;

技術原因 / Technical Reason

Rakudo(Raku 實現)存在 issue #2404,阻止模組完全修改語言語法。子語言(slangs)目前無法:

  1. 改變保留關鍵字

  2. 修改宣告語法

  3. 改變基本控制結構

但是,它們可以:

  • 定義新函數

  • 創建自定義運算符

  • 導出符號到命名空間

替代方案 / Workarounds

控制結構 / For Control Structures

使用提供的函數和區塊:

# 替代 if/while 語法
若($x 大於 5, { 言("大") }, { 言("小或等") });

當({ $x 小於 10 }, { 
    言($x);
    $x++;
});

遍歷([1,2,3,4,5], -> $n {
    言("數字:$n");
});

# 替代 given/when
依據($值, {
    遇("紅", { 言("紅色") });
    遇("綠", { 言("綠色") });
    預設({ 言("其他顏色") });
});

改善可讀性 / For Better Readability

使用古典漢語註釋:

# 若使用者已成年
if ($年齡 大於等於 18) {
    言("已成年");
}

# 為每個學生進行處理
for @學生 -> $學生 {
    言("處理:$學生");
}

文學化程式設計 / Literary Programming

利用古典漢語的表達特色:

# 定義文學化的函數名
sub 觀其所由($行為) { 分析行為($行為) }
sub 察其所安($狀態) { 檢查狀態($狀態) }

# 使用古典句式
my $君子 = 檢查品德($人物);
若(
    { $君子 },
    { 言("君子也") },
    { 言("非君子也") }
);

文化特色 / Cultural Features

詩詞程式設計 / Poetic Programming

# 詩詞風格的變數命名
my $明月 = 獲取月相();
my $清風 = 獲取風向();
my @山河 = 獲取地理();

# 文學化的邏輯表達
若(
    { ($明月 等 "滿月") 和 ($清風 等 "徐來") },
    { 言("良辰美景") },
    { 言("時機未至") }
);

哲學化表達 / Philosophical Expression

# 道家風格
my $道 = 無;
當({ 非 定義($道) }, {
    $道 = 自然演化();
});

# 儒家風格
sub 修身齊家治國平天下(@步驟) {
    遍歷(@步驟, -> $步驟 {
        實踐($步驟);
        若({ 完成($步驟) }, { 進入下階段() });
    });
}

未來狀態 / Future Status

當 Rakudo issue #2404 解決後,將可能實現:

  • 翻譯所有關鍵字

  • 創建完全古典漢語語法

  • 修改語言語法

目前,本模組在現有限制內提供最大可能的功能。

建議 / Recommendation

教育用途 / For Educational Use

此模組非常適合:

  • 向中文使用者教授程式設計

  • 展示概念而無語言障礙

  • 創建更易理解的範例

  • 傳統文化與現代技術結合

藝術創作 / For Artistic Creation

  • 數位詩詞創作輔助

  • 古典文學分析工具

  • 文化算法實現

  • 哲學概念程式化

研究用途 / For Research

  • 古典文本數位化處理

  • 傳統文化數據分析

  • 中文自然語言處理

  • 跨文化程式設計研究

生產環境 / For Production

對於生產專案,建議:

  • 使用古典漢語註釋配合英文程式碼

  • 創建描述性的中文函數名

  • 詳細的中文文檔

  • 團隊內部約定使用規範

ClassicalChinese v0.0.2

Classical Chinese language support for Raku - Raku 文言

Authors

  • Danslav Slavenskoj

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • ClassicalChinese
  • 古文
  • 文言
  • 文言文
  • 漢文

Documentation

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.