On Thu, Oct 20, 2011 at 2:52 PM, Eric Tanter <[email protected]> wrote: > Thanks Sam, > > Actually, that's not what we're after. > > In untyped Racket, we have a struct monad: > > (struct monad > (;; A -> M A > return > ;; A -> (A -> M B) -> M B > bind)) > > Then we have several instantiations (exception, state, what-have-you): > (define my-fancy-monad (monad (lambda ...) (lambda ...))) > > It is feasible to type the particular instantiations (the return/bind > functions we need in each case), but we'd like to type the monad struct > itself. > The question is what to do about M?
Unfortunately, Typed Racket doesn't support higher-kinded type parameters, which is what you would need here. If you have an example of how you want to use this where the solution I gave earlier doesn't work, I can probably give a better answer of how to handle it. -- sam th [email protected] _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

