[Haskell-cafe] Re: suggestions for doing date/time values with Data.Generics ?

Thomas Hartman tphyahoo at gmail.com
Mon Oct 5 15:54:33 EDT 2009

fwiw, this s what I'm doing till I figure out a better way:

import System.Time
data MyTime = MyTime Integer Integer
  deriving (Typeable,Data)
myTimeToClockTime (MyTime a b) = TOD a b
myTimeFromClockTime (TOD a b) = MyTime a b

and use MyTime in the happstack state.

2009/10/5 Thomas Hartman <tphyahoo at gmail.com>:
> I want to patch the time package, which I darcs got head on. Goal is
> to be able to do newtype deriving for UTCTime which I reckon is the
> base time value, for use in happstack applications state.
> basically, need instances for UTCTime, for Data and Typeable.
> **********
> on #haskell:
> <patch-tag> I just darcs got time package and attempted to install.
> cabal
>           install didn't work because missing configure fle. there's
> a .ac
>           file there, so I tried first autoconf, then cabal
>           install. configure file got created, but failed with
>           config.status: error: cannot find input file:
>           include/HsTimeConfig.h.in. now what?
> <patch-tag> my goal is to patch time package so can do data generics deriving.
> <Berengal> patch-tag, use System.Time instead?
> * Berengal shrugs and sighs                                             [12:20]
> <patch-tag> could try that...
> *** o-regalia (n=o-regali at host-0-130.mimpvbg.clients.pavlovmedia.com)
> has
>   quit: "Lost terminal"
> <Berengal> It already has a Serializeable instance defined in one of
> the
>          happstack modules, so there's probably a Typeable and Data
> instance
>          somewhere as well
> <Berengal> patch-tag, unfortunately, UTCTime has a component of a
> hidden
>          datatype which isn't an instance of Typeable or Data, and
> since
>          it's not exported it's impossible to create the instance as well
> <Berengal> If it were exported, it'd be pretty easy
> <patch-tag> hw can I use UTCTime, deriving Typeable and Data? (want to
> use
>           UTCTime in happstack).
> <patch-tag> http://moonpatio.com/fastcgi/hpaste.fcgi/view?id=4278#a4278
> <patch-tag> I guess I should have said I'd like to use newtype
> deriving rather
>           than define instance myself if that's possible.
> <Berengal> patch-tag, that's possible, but could break other things.
> The
>          correct solution is to patch the existing package, but that
> takes
>          time
> <Berengal> patch-tag, Day, or something. Can't remember off the top of my head
> *** paolino (n=paolino at has quit: "Leaving."
> <ski> Philonous : if you can't implement both operations (satisfying
> laws),
>     though, it is probably better to make a new class                 [12:09]
> <patch-tag> Berengal: a package is hidden if when you do :info in
> ghci, it
>           comes out as fully qualified, right?
> <patch-tag> pity also that newtype deriving doesn't give you a nicer
> error
>           message like "deriving choked at type blah"
> <Berengal> patch-tag, it comes fully qualified if it's not imported,
> so you'll
>          have to try to import it to see if it's really hidden        [12:10]
> *********
> Seems like the right thing to do is patch the time package anyway.
> File Edit Options Buffers Tools Haskell Help
> {-# LANGUAGE DeriveDataTypeable #-}
> module TypeableTime where
> import Data.Time
> import Data.Data
> import Data.Generics
> import Data.Typeable
> -- doesn't work
> --data MyUTCTime = MyUTCTime UTCTime
> --   deriving (Typeable,Data)
> -- should I work up to UTCTime by doing this...?
> data MyDay = MyDay {toMyDayModifiedJulianDay :: Integer}
>  deriving (Typeable,Data)
> newtype MyString = MyString String
>  deriving (Read,Show,Ord,Eq,Typeable,Data)
> -- should I just modify time package? is this easier?

More information about the Haskell-Cafe mailing list