2016-07-02 7 views
1

Ich baue derzeit ein Twitter-CLI-Client in Haskell, und ich habe einen Datentyp, der eine DM und eine darstellt, die einen Tweet darstellt. Ich erhalte jedoch eine mehrfache Erklärung Fehler, weil ich den gleichen Namen für beide verwenden:Multiple Erklärung Fehler in der Datentypdeklaration

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) 

Kennt jemand eine Lösung für dieses spezielle Problem?

+2

entweder verschieben Sie sie in verschiedene Module oder umbenennen ('dm_text', ...) - wenn Sie auf GHC sind 8 Sie einen Blick haben, können bei: Sie können, indem er erklärt dies in der Datei tun, dass [DuplicateRecordFields] (https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/DuplicateRecordFields), aber persönlich mag ich nicht über diese zu viel – Carsten

+0

Das Problem ist, dass es den api Namen übereinstimmen muss, so es gibt die Informationen, die ich brauche, so dm_text geht ja gar nicht. Im gehend zu betrachten Erstellung eines Moduls –

+1

gut ja - aber Sie immer die Möglichkeit haben, die JSON-Instanzen selbst zu implementieren - so die Namen keine Rolle (aber Module sind wahrscheinlich einfacher;)) – Carsten

Antwort

0

Wie definiert here, die genannten Mitglieder nur Funktionen, die die Werte in der Datenstruktur verwendet werden, um zu nennen. So

, wenn Sie wirklich verwenden, um sie möchten, können Sie dies tun, indem Sie die Sprache Erweiterung.

{-# LANGUAGE DuplicateRecordFields #-}

Verwandte Themen