2016-11-29 122 views
2

學習elm但沒有得到什麼意思筆者通過以下:爲什麼榆樹不使用括號?

我們能夠避免寫括號的原因是因爲功能 應用關聯到左邊。

+2

'a b c' =='((a b)c)'; (a(b)c)d)'; 'abc = ... body ...'=='a =(\ bc - > ... body ...)'=='a =(\ b - >(\ c - > ... body。 ..))'。 –

回答

8

在函數名稱後面指定的任何值或函數都將與該函數相關聯,因爲它是自動參數,這就是所有的意思。

在語言,如JavaScript,您可以明確區分功能的使用,作爲一種表達:

function foo (message) { 
    return message 
} 

console.log(foo)   // Function as expression. 

console.log(foo('Hello')) // Function application with result: "Hello" 

在榆樹這種行爲不需要parentesis。

foo message = 
    message 

foo   -- Function as expression. 

foo "Hello" -- Function application with result: "Hello" 

當你想應用該函數並對結果進行處理時,它完全不同於JavaScript。在這裏,你將不得不明確地告訴編譯器,這(foo "Hello")String.toUpper

String.toUpper (foo "Hello") -- "HELLO" 
1

一個參數有問題的括號中是((divide 5) 2)。我對該句的解釋是,您可以將((divide 5) 2)編爲divide 5 2,因爲divide 5 2是從左起第一個,即divide 5 -> divide5,然後divide5 2 -> 2.5進行評估。

雖然我看不出還有什麼可以評估! 5 2divide 2然後divide2 5都沒有意義。