簡體   English   中英

Haskell:在Persist.Sql中使用元組-數據庫作為PersistSqlField

[英]Haskell : Using Tuple in a Persist.Sql - Database as PersistSqlField

我創建了一個數據庫,希望在該數據庫中使用[(String,[String])]類型的字段。

    share [mkPersist sqlSettings, mkMigrate "migrateAll"][persistLowerCase|
    ConfigDB
        numberOfParticipants Int
        groupId              Int
        memberList           [(String,[String])]
        deriving Show
    |]

但是,我收到一條錯誤消息:

嘗試運行編譯時代碼時發生異常:無效的字段類型>“ [((String,[String])]”)PSFail PSFail“ PSFail \\”(\\\\“ \\\\”,\\\\“ \\\\”,Nothing)\\“

該錯誤似乎是由於使用元組而引起的,因為[String]正常工作,但是如果我編寫(String,String),編譯器會告訴我:

“不在范圍內:類型構造函數或類String,也許您是指String(從Prelude導入)”

在Database.Persist.Sql中,我找到了(PersistFieldSql a,PersistFieldSql b)=> PersistFieldSql(a,b)是一個實例,因此它應該可以工作。

另外,導入Data.Tuple也無濟於事。 我當然已經導入了Database.Persist.Sqlite。

提前致謝,

索菲亞

將復雜類型嵌入持久性定義語法中是很棘手的(有時是不可能的)。 我的建議是在Haskell代碼中定義類型同義詞,例如:

type MemberList = [(String, [String])]

然后在定義中使用該類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM