2012-06-26 24 views
0

可能重複:
The meaning of ' in Haskell function name?
Apostrophe in identifiers in Haskell單機單引號GOFER

我的工作我的方式,雖然this,並盡我所能用Clojure實現它。雖然我不認識任何Gofer(或Haskell),但我仍然很清楚自己的想法。然而,我似乎無法找到解釋inp後的單引號和雙單引號應該起什麼作用的任何地方。

seq :: Parser a -> Parser b -> Parser (a,b) 
p `seq` q = \inp -> [((v,w),inp'') | (v,inp') <- p inp 
    , (w,inp'') <- q inp'] 

幫助將不勝感激。

+3

它們不表示任何東西,它們是名稱的一部分。將相關實體命名爲相似的是一個常見的主題,用撇號來區分它們。 'inp'(inp-prime)是在原始輸入上運行第一個分析器後剩下的輸入,在第一個分析器之後運行第二個分析器之後輸入剩餘的輸入「inp」。另一種方法是將它們稱爲「inp_1」,「inp_2」或類似的東西。 –

+0

Ahhh,謝謝,難怪我找不到它們在語言參考:) – pondermatic

+0

引用Haskell報告:「一個標識符包含一個字母后跟零個或多個字母,數字,下劃線和單引號。 – augustss

回答

0

(從唐的答案複製到前一個問題)


撇號僅僅是名稱的一部分。這是Haskell採用的命名約定(慣用法)。

Haskell中的約定是,就像在數學中一樣,變量名稱上的撇號表示與先前變量有某種相關性或相似性的變量。

一個例子:

let x = 1 
    x' = x * 2 
in x' 

x'有關x,我們表明,用撇號。