File ‹zippy_state_mixin_base.ML›

(*  Title:      Zippy/zippy_state_mixin_base.ML
    Author:     Kevin Kappelmann
*)
signature ZIPPY_STATE_MIXIN_BASE =
sig
  structure MS : evalsfx_ParaT_nargs "IMONAD_STATE_BASE"
  include evalsfx_ParaT_nargs "MORPH_BASE"
  where type (@{ParaT_args} 'a) M.t = (unit, @{ParaT_arg 0}, @{ParaT_arg 0}, 'a) MS.t
end

functor Zippy_State_Mixin_Base(
    MS : evalsfx_ParaT_nargs "IMONAD_STATE_BASE"
  ) : ZIPPY_STATE_MIXIN_BASE
  =
struct
structure MS = MS
structure MB = evalsfx_ParaT_nargs "Morph_Base"(open MS
  type (@{ParaT_args} 'a) t = (unit, @{ParaT_arg 0}, @{ParaT_arg 0}, 'a) MS.t)
open MB
end