2015-05-16 16 views
6

किसी को भी बता सकते हैं कि क्यों इस कोड संदेशक्या यह टेम्पलेट हास्केल का अपेक्षित व्यवहार है?

Not in scope: type constructor or class B 

साथ

data A = A { 
    _b :: B 
} 
makeLenses ''A 

type B = String 

संकलन नहीं करता है और यह करता है:

type B = String 

data A = A { 
    _b :: B 
} 
makeLenses ''A 

makeLenses बिना सब कुछ ठीक संकलित करता है।

मेकलेन्स के बाद मेरे पास सिनोनीम घोषणा क्यों नहीं हो सकती है?

उत्तर

8

केवल टेम्पलेट हैकेल कॉल से पहले की परिभाषाएं दायरे में पहुंच योग्य हैं।

इस पिछले प्रश्न को उसी विषय पर देखें: Haskell: Template Haskell and the scope

संबंधित मुद्दे