可變從Haskell的文檔:函數名VS在Haskell
標識符是詞法區分爲兩個命名空間(第1.4節):那些具有小寫字母開頭(可變 標識符)和那些以大寫字母 (構造函數標識符)開頭的字符。
所以含有恆定值的變量,即a=4
和函數名稱添加add a b = a + b
都是變量標識符,是真的嗎?我們可以說一個函數名是可變的嗎?
從另一個學術來源:
f (patter1)...(pattern2) = expression
..where一個圖案可以是構造函數或變量,而不是限定的 函數
這是從哪裏獲得困惑。我可以做f g x
其中g是一個函數,我再次看到函數名稱是一個變量。真正? 那麼它們與「沒有定義的定義函數」是什麼意思呢?
不知道。第二個來源可能是誤導性或措辭不佳。無論如何,如果你的某個參數與一個定義的函數具有相同的名稱,那麼這個定義就會被隱藏起來。 – Sarah
我認爲他們試圖與Prolog和朋友形成對比,在那裏你可以做像'foo(bar baz)= quux'這樣的事情,這意味着「當調用'foo'時,搜索一個值'baz', baz'將輸入輸出到'foo',然後輸出'quux'「。 Haskell不做這樣的廣義搜索;只有明顯的內射函數 - 構造函數 - 才能以這種方式「倒轉」。 –