Re: [連結] 松本行弘: Code 的世界~成為超級程式設 …
※ 引述《godfat (godfat 真常)》之銘言:
: : 演算法相同,但 Ruby 的看起來密度較低。Ruby 不需要明確給定型別,
: : 不必要的型別指定可以省略,因此可以較簡潔。
: 這比較可能略嫌粗糙了點... XD
: static typing 與 dynamic typing 在本質上就不同了,
: 從這點出發的話,恐怕是需要比較 trade off.
: 或許可以從這邊看出,Matz 並不太喜歡 static tying.
其實我覺得,會喜歡 dynamic typing 的人,
如果不是初學者,就真的是高手了,因為 dynamic typing 要寫時,
考量的東西絕不比 static typing 來得少,
亂寫的下場會比 static typing 更慘。
: : 若導入巨集功能,會引起嚴重的副作用,這裡到底是函式呼叫,控制結構,
: : 還是要代入什麼,得再查文件才能知道。
: : 嗯,也許世界上也有不會為此所苦的 Lisp 程式人員,不過我認為這只是
: : 少數人。
: : 要能在世界上普及的程式語言,我相信必須要有「不為風所搖動的核心」
: : 的文法。
: 噢,原來原因是這個,那我完全能理解 XD
: 之前看 Lisp 就常常搞不清楚 macro 跟 function 之間的狀態...
: 如果全部都是 function, 那很多事情就會變得一致了。
這個說法其實有一點奇怪,在 Lisp 裡面,使用就直接使用了,
沒有人會特別去在意這個人是巨集還是函式,
我舉個例子好了,像是 or,其實 or 是從 if 衍生的,不難想像吧。
這邊我先寫只有兩個參數的版本,其實完整的是 1 至 n 個參數都可以接受的。
(defmacro my-or [a b]
`(let [result# ~a]
(if result# result# ~b)))
完整版應該類似下面這樣。
(defmacro my-or
([a] a)
([a b]
`(let [result# ~a]
(if result# result# ~b)))
([a b & c]
`(my-or (my-or ~a ~b) ~@c)))
像是這樣,但是其實真正在用 or 的時候,
應該不會有人刻意去分辨它是不是巨集...
就像中文,外國人覺得不順的話是他們不習慣的關係。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.29.28.137
推
08/10 09:47, , 1F
08/10 09:47, 1F
推
08/10 11:18, , 2F
08/10 11:18, 2F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章