Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 数据类型声明中存在多个声明错误_Haskell - Fatal编程技术网

Haskell 数据类型声明中存在多个声明错误

Haskell 数据类型声明中存在多个声明错误,haskell,Haskell,我目前正在Haskell中构建一个twittercli客户端,我有一个数据类型表示DM和一个表示tweet。但是,我得到了一个多重声明错误,因为我必须对这两个名称使用相同的名称: data Users = Users { screen_name :: String } deriving(Show, Generic) data Tweet = Tweet { text :: !Text, retweeted :: Bool,

我目前正在Haskell中构建一个twittercli客户端,我有一个数据类型表示DM和一个表示tweet。但是,我得到了一个多重声明错误,因为我必须对这两个名称使用相同的名称:

data Users =  Users { screen_name :: String } deriving(Show, Generic)


data Tweet = Tweet { text :: !Text,
                     retweeted :: Bool,
                     user :: Users
                   } deriving (Show, Generic)

data DM = DM { text :: !Text,
               sender_screen_name :: String
             } deriving (Show, Generic)
有人知道这个特定问题的解决方案吗?

根据定义,命名成员只是用于调用数据结构中的值的函数

因此,如果您真的想使用它们,可以通过使用语言扩展来实现。您可以通过在文件中声明以下内容来实现:

{-#LANGUAGE DuplicateRecordFields#-}

根据定义,命名成员只是用于调用数据结构中的值的函数

因此,如果您真的想使用它们,可以通过使用语言扩展来实现。您可以通过在文件中声明以下内容来实现:


{-#LANGUAGE duplicate recordfields#-}

将其移动到不同的模块中或重命名它们(
dm_text
,…)-如果您使用的是GHC 8,您可以查看一下,但我个人不太喜欢这样。问题是它必须匹配api名称,因此它返回我需要的信息,所以dm_文本不起作用。我将考虑创建一个模块威尔是的,但您始终可以选择自己实现JSON实例,因此名称无关紧要(但模块可能更简单;)。要么将其移动到不同的模块中,要么重命名它们(
dm_text
,…)-如果你在GHC 8上,你可以看看,但我个人不太喜欢这个问题是它必须匹配api名称,所以它返回我需要的信息,所以dm_文本不起作用。我将考虑创建一个模块well yes-但您始终可以选择自己实现JSON实例-因此名称无关紧要(但模块可能更容易;)