在 GHC 手册中记录通配符示例

Record wildcards example in the GHC manual

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 说:"Not in scope: data constructor ‘R’"。

该示例的模块 X 似乎有很多问题。看起来他们打算实现类似的目标:

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

3 个错误:

  • 缺少扩展编译指示,
  • 缺少类型和数据构造函数的导入方式不同,
  • 缺少 a 的任何定义(作为字段选择器除外)。