我想在Haskell中使用这种数据类型:
data DirTree = DirTree {
name :: FilePath,
type :: Text,
children :: Maybe [DirTree]
}
但Haskell不接受名称type
,因为它是保留关键字。
有没有办法使用它?由于type
不是从包中导出的对象,因此我无法通过执行import ... hiding (type)
来解决此问题。
答案 0 :(得分:3)
请注意,type
是Haskell中用于定义类型同义词的关键字。看:type is a keyword。
还在ghc-8.0.1上对此进行了测试,并且有效。
data DirTree = DirTree {
name :: FilePath,
_type :: Text,
children :: Maybe [DirTree]
}
答案 1 :(得分:0)
正如您所收集的,您不能使用保留字作为标识符。
我喜欢做的是在记录语法中使用类型名称作为名称的前缀,例如:
data DirTree = DirTree { dirTreeName :: FilePath,
dirTreeType :: Text,
dirTreeChildren :: Maybe [DirTree] }
这也可以防止与其他具有通用名称的函数发生潜在的名称冲突。
或者,正如评论中指出的那样,您可以在名称中添加_
或'
等符号,以区别于关键字。