if 的語法問題

最流行的 if 語法來自 C 語言, 也就是在圓括號裡放表達式。 我一直以為圓括號有點多餘, 明明就是表達式了,為什麼要再括起來?

if (test()) {
    puts("test is true");
}

後來發現依絕大多數語言的邏輯, 表達式也是 statement, 而 statement 應該要用分號結尾, 或用換行結尾。 竟然變成我最討厭的 allman 風格。

if test()
{
    puts("test is true")
}

if test(); {
    puts("hey")
}

go 語言是沒有括號,但看起來反而不習慣。

if test() != nil {
    foo();
}

還是我大 lisp 好看 <3 因為要比較就要呼叫函數,自然有括號。 不像其它語言括號有改變優先順序的歧義, 在 lisp 只有函數一種,沒有優先權問題。

(if (= a b)
    (print "a = b")
    (print "a != b"))