[web-devel] [Yesod] how to write PersistFIeld instance?

Michael Snoyman michael at snoyman.com
Thu Feb 3 18:14:22 CET 2011

On Thu, Feb 3, 2011 at 6:34 PM, Katsutoshi Itoh <cutsea110 at gmail.com> wrote:
> I'd like to introduce serializable data type like this:
> data Role = Teacher | Student
>                   deriving (Read, Show, Eq, Ord)
> share2 mkPersist (mkMigrate "migrateAll") [$persist|
> User
>         ident String
>         :
>         :
>         role Role Maybe Update
>         :
> |]
> instance PersistField Role where
>       ???
>      Would you teach me how to write this instance?

Check out the Haskellers codebase[1]: Persistent includes a TH
function called derivePersistField[2] which does this automatically
for you based on Show/Read instances. I personally find this the best
approach to the problem. It's more efficient to serialize to integers
(and you could use an Enum instance for that), but it's less


[1] https://github.com/snoyberg/haskellers/blob/master/Model.hs
[2] http://hackage.haskell.org/packages/archive/persistent/

More information about the web-devel mailing list