[darcs-users] darcs patch: Make Darcs.Repository.Internal compile w... (and 1 more)

David Roundy droundy at darcs.net
Thu Aug 14 14:36:45 UTC 2008


On Tue, Aug 12, 2008 at 11:23:10PM -0700, Jason Dagit wrote:
> > And I wrote more of this email and then lost it.  We'd need to rewrite
> > withGutsOf to accept a WIO as an argument, and we'd make
> >
> > withRepoLock :: [DarcsFlag] -> (forall p C(r u). RepoPatch p => Repository
> > p C(r u u) -> IO a) -> IO a
> >
> > and various other changes such as
> >
> > tentativelyAddPatch :: RepoPatch p => [DarcsFlag] -> PatchInfoAnd p C(t t')
> > -> WIO p C(r u t t') ()
> >
> > Anyhow, this will be a lot of work...
> 
> 
> Yes, I was thinking of exactly the same structure when I was writing the
> "mapAdd".  You probably saw my comment about constructing a new Repository
> object on the recursive call.  Maybe we can move to what you propose
> eventually, but it seems there is lower hanging type safety that we can pick
> first.
> 
> Oh and that reminds me, I was reminded from writing mapAdd how unsafe the
> constructors of values with phantoms types can be when you're using the
> phantoms as witnesses.  I need to comment on that in my writing.

Indeed, we need to be very careful about where type constructors are
imported.  It might even (some day) be worth giving them "unsafe"
identifiers and adding them to tests/haskell_policy.sh.
-- 
David Roundy
Department of Physics
Oregon State University


More information about the darcs-users mailing list