2015-09-01 51 views
3

在GHC手冊例子,據說記錄通配符在GHC手動

module M where 
    data R = R { a,b,c :: Int } 
module X where 
    import M(R(a,c)) 
f b = R { .. } 

R{..}擴展到R{M.a=a}

但我看不出是一個定義。這段代碼如何工作?

我試圖編譯模塊X.GHC說:「不在範圍內:數據構造函數'R'」。

回答

7

該示例的模塊X看起來相當麻煩。它看起來像他們打算實現的東西,如:

{-# LANGUAGE RecordWildCards #-} 
module X where 
    import M(R(R,a,c)) 
    f a b = R { .. } 

3個錯誤:

  • 缺少擴展編譯,
  • 缺少的類型和數據的構造都是進口的不同,
  • 缺少任何定義a(除字段選擇器外)。