view lib/ur/monad.ur @ 851:20a364c4a6dc

Fix a bug with 'Some p' patterns, where 'p' needs specialization
author Adam Chlipala <adamc@hcoop.net>
date Thu, 18 Jun 2009 18:06:15 -0400
parents 74e9e7642f08
children d1d0b18afd3d
line wrap: on
line source
fun exec [m ::: Type -> Type] (_ : monad m) [ts ::: {Type}] r (fd : folder ts) =
    foldR [m] [fn ts => m $ts]
    (fn [nm :: Name] [v :: Type] [rest :: {Type}] [[nm] ~ rest] action acc =>
        this <- action;
        others <- acc;
        return ({nm = this} ++ others))
    (return {}) [ts] fd r