WhatLang
外觀
WhatLang 是預防於 2024 年 6 月最初創造的一門基於棧的深奧編程語言(esolang),具有圖靈完備性,其解釋器使用 TypeScript 編寫。
機制
WhatLang 有字符串(String)、數字(Number,64 位浮點數,含 NaN)、數組(Array,可變長度,允許混合類型)與未定義(Undefined)四種值類型,除了使用先進先出的堆棧作為操作數據的基本工具外,也可以操作命名的變量。
WhatLang 代碼使用 ASCII 中數字、字母外的符號作為指令,每個指令都會執行對應的動作,包括棧操作(如\交換棧頂二值、:複製棧頂值、_丟棄棧頂值)、運算(+加法或字符串拼接、-*/%常規運算)、流程控制({}循環、!跳出)、數組操作(,;$讀寫刪除元素)等;而使用 @ 指令可以調用函數,內置函數提供了其他一些重要的功能(如num@/str@/arr@類型轉換、rand@隨機數、len@獲取序列長度等)。
應用
WhatLang 解釋器作為一個 Koishi.js 插件誕生,在 QQ 機器人環境下通過內置函數提供了消息操作、網絡請求、數據持久化存儲的接口。最初由預防的個人 QQ 機器人「高C」搭載,但該機器人未持續運行提供服務。LNNBot 搭載了 WhatLang 解釋器並藉此提供了文言文和道本語語言偏好下的特殊數字顯示格式、按名稱搜索 Unicode 字符、七曆轉換、單人 wordle 小遊戲等多項功能。
代碼示例
Hello World 程序:
`Hello, World!`
計算當前北京時間星期幾及當前時間:
time@ 60000/ 480+: 60/: 24/ flr@ 4+ 7% "日一二三四五六"\,\_ "现在是星期"\+"的"+\ flr@ 24% "时"++\ flr@ 60% "分"++.