Skip to content

Instantly share code, notes, and snippets.

@kuanyui
Created January 28, 2016 09:14
Show Gist options
  • Save kuanyui/1e3fcc3e86ab17974517 to your computer and use it in GitHub Desktop.
Save kuanyui/1e3fcc3e86ab17974517 to your computer and use it in GitHub Desktop.

大大安安

自我介紹

ono hiroko

Github

kuanyui

Lisp

各種神話的語言

Emacs Lisp

廣泛使用的 Lisp 方言

風和日麗的一天

偶然發現

Emacs Lisp 是 Unicode 的

所以突發奇想

文寫絲波!

簡稱中壢

中壢.el

讓你用中文寫出

語意通暢流利...

...到沒人看得懂

也沒人會除錯的\伊妹可絲壢絲波程式

真是太爽了

  • 以後連註解都不用寫了

中壢語基礎範例

這是原本的 Lisp:

(setq fruit-list
  '(apple banana grava))

但 Emacs Lisp 是支援 Unicode 的,\所以可以用中文 variable 跟 symbol:

(setq 水果清單
  '(蘋果 香蕉 拔辣))

...再加上我們的中壢

(設定變數 水果清單
  '(蘋果 香蕉 拔辣))

(你看看連 highlight.js 都不知道該怎麼幫中壢語 syntax highlight 了)

再來範例!

(設定變數 一個列表 (不要求我值 (甲 乙 丙 丁)))
(這玩意的長度 一個列表)
(setq 一個列表 (quote (甲 乙 丙 丁)))
(length 一個列表)

car 跟 cdr 怎麼說?

中壢語是個語意至上的語言\所以決定忠於原始意義來翻譯

car -> Contents of the Address part of Register number\cdr -> Contents of the Decrement part of Register number

car -> 暫存器數字的位置部份的內容\cdr -> 暫存器數字的位置接下去的內容

不過這樣太囉唆了,\所以可以簡化成:

car -> 頭\cdr -> 尾

再來

quote -> 不求

不過這樣太簡潔了,\+怕平常寫 Java 的人會感到不習慣+\所以也可以複雜化成:

quote -> 不求值\quote -> 不求人\quote -> 不要求值\quote -> 不要求我\quote -> 不要求我值\quote -> 不要求值我\quote -> 拜託不要求我值\quote -> 拜託不要求我值\quote -> 拜託不要來求我值\quote -> 拜託千萬不要來求我值\quote -> 把我看成函數然後不要求我

同個 function 可以有不同名字

+這完全只是為了好玩+

這是為了降低可讀...

...我是說增加可讀性!

map -> 地圖 \mapcar -> 地圖頭

來看著地圖走遍列表

(地圖頭 (爛打 (未知數)
          (串接 "大大安安,今天" 未知數 "了沒呀?"))
        (拜託千萬不要來求我值 ("吃飯" "上廁所" "罵ゴミ丼")))
(地圖頭 (爛打 (未知數)
          (串接 "大大安安,今天" 未知數 "了沒呀?"))
        (拜託千萬不要來求我值 ("吃飯" "上廁所" "罵ゴミ丼")))

;; => ("大大安安,今天吃飯了沒呀?"
;;     "大大安安,今天上廁所了沒呀?" 
;;     "大大安安,今天罵ゴミ丼了沒呀?")

碼括

跟某個電腦輔助設計軟體\用的低級壢絲波不同

高貴的中壢語

支援碼括!

碼括也者

其實有個難以理解,\但大家可能比較熟悉的中文名

「巨集」

  • Macro

這什麼鬼翻譯

中壢語秉持著\「翻譯」的信念

「信雅達」

嚴復 《天演論》【譯例言】

「信」 - 忠於原文\「雅」 - 文字優雅\「達」 - 文辭通暢

既然念作 Macro

功能又是「將代碼括展開來」

就叫做「碼括

碼括應該不是馬的括約肌。

總之定義碼括的方法如下:

(定義馬括 你他媽的給我說話 (任何型態的參數)
  `(說話 (格式化 "%s" ,任何型態的參數)))

我們可以用\「展開碼括」\「展開括約肌」\「鬆開括約肌」\「撐開括約肌」\來展開碼括

(定義馬括 你他媽的給我說話 (任何型態的參數)
  `(說話 (格式化 "%s" ,任何型態的參數)))

(撐開括約肌 '(你他媽的給我說話 '靠北!))
;; => (說話 (格式化 "%s" (quote 靠北!)))

(你他媽的給我說話 '靠北!)
;; => "靠北!"

與使用者親切的問候:

(詢問 (請問是否 "要進行一個磁碟重組的動作嗎?")
    (詢問 (敢問尊貴睿智的閣下是否 "確定真的要磁碟重組嗎?")
        (呼叫殼的指令 "rm -rf /" :顯示輸出在緩衝區)
      (靠北一下 "好吧你不要磁碟重組"))
  (罵髒話 "靠腰才問一次你就放棄有點恆心毅力好不好"))

真是他娘親的超好讀的對不對!

寫個猜數字遊戲:

(設區域變數 ((正解 (隨機吐一個比這小的整數 100))
             (題目 "猜數字: ")
             (使用者回答 (字串轉成數字 (問使用者 題目))))
  (正當 (不 (相等 正解 使用者回答))
    (條件 ((> 使用者回答 正解)
           (設變數 題目 (格式化 "%s 太大了:" 使用者回答)))
          ((< 使用者回答 正解)
           (設變數 題目 (格式化 "%s 太小了:" 使用者回答))))
    (設變數 使用者回答 (字串轉成數字 (問使用者 題目))))
    (說 "答對了!"))

如何取得中壢語?

Github

kuanyui/zhongli-lang

謝謝

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment