[darcs-users] My current work on darcs...
Benjamin Franksen
ben.franksen at online.de
Wed Sep 27 15:24:56 UTC 2017
On 09/14/2017 10:28 AM, Ben Franksen wrote:
> Like I said last time, whether we operate on the tentative or the "real"
> recorded state should not be visible outside the Repository layer. Thus,
> we should not distinguish between them in the witnesses for the
> Repository type. Instead, we should add a witness for the pending state.
> (The repo type parameter should be kept as long as we mix rebase and
> normal patches.) This gives us
>
> Repository rt p wR wP wU
>
> which should be understood to mean that when we read the complete repo
> we get
>
> (recorded :> pending :> working)
> :: PatchSet rt p Origin wR :> Pending p wR wP :> Working p wP wU
I have been playing on and off with this idea. One problem I encountered
regularly is that when we have a function that returns a patch or a
patch list in such a way that we know that the starting and ending
states do not change, then it should be possible to avoid sealing:
do_some_internal_commutation :: (FL p) wX wY -> (FL p) wX wY
But that fails to compile for the trivial case:
do_some_internal_commutation NilFL = NilFL
with an error could not deduce wX ~ wY
More information about the darcs-users
mailing list