Gergely Buday wrote:
I have the following problem:

record ::: {Type} is fixed, [data] is dependent on [record] and
[MspecificFields]

I have a functor, that, among others, contain

functor Render (M: sig
                                con MspecificFields :: {Type}
                                val renderMspecific : $MspecificFields ->  xbody
                              end )
: sig
     render : data ->  xbody
   end

I call this for three different M, but now I want to rewrite it so
that the resulting module has the signature

sig
   type mRecord
   getRecord : data ->   mRecord
   render :  mRecord ->  mRecord ->  xbody
end

so that the caller can store the previous value of mRecord and the
render function can compare the fresh and the stored. Since the
argument structures differ in some fields, I cannot declare a common
type for mRecord, or, at least, I do not see how I could.

Is there a solution for this in ur/web?

Sure: define [mRecord] outside the functor completely. It could be an abstract type in an enclosing module. (Modules can contain functors, which can contain modules that contain functors, and so on ad infinitum.)

_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur

Reply via email to