2016-03-29 22 views
2

hiçbir hata verir:Bu bağlamda parantez neden `:` ile gerekir? Bir GHC yorumlayıcı aşağıdaki Yazma

let head' (x:_) = x 

Ama parantez kaldırırsanız:

let head' x:_ = x 

... biz edinin:

Parse error in pattern: head'

Neden parantez gerekli?

+4

, çünkü diğer şablonlar '(head' x) 'e eşit olacaktır: _' (uygulamanın en yüksek önceliğe sahip olduğunu unutmayın) ve bu yalnızca bir Veri Oluşturucu için anlamlı olur. – Carsten

+0

Olası kopyası [Haskell: Desente ayrıştırma hatası ] (https://stackoverflow.com/questions/8561762/haskell-parse-error-in-pattern) –

cevap

10

Haskell'de, işlev uygulaması herhangi bir operatörden daha yüksek önceliğe sahiptir ve desen eşleşmesi bunu yansıtır. Bu nedenle, parantez olmadan, head' x:_, (head' x):_ olarak ayrıştırılır; bu, bu bağlamda anlam ifade etmez ve bir hataya neden olur.

İlgili konular