By prefacing [Monad.mapR] with [@], you have requested that type class arguments be passed explicitly. Membership in the class [monad] is an example of such an argument, and you can see it early in the type of [mapR] (and it appears first in the error message). That argument should go first, before [[id]]. Just put an underscore in that position and it should work.

Gergely Buday wrote:
I would like to fix type constraints for using Monad.mapR so that I
need not pass them when using for creating sources of values. I do not
understand what this error message say, let alone fix the bug. How
should I fix my code?

- Gergely

$ urweb mapr
/home/gergoe/local/sandbox/sandbox/mapr.ur:2:5-2:16: Expression is not
a constructor function
Expression:  Monad.mapR[[<UNIF:R>]] [<UNIF:A::Type ->  Type>]
       Type:
((Basis.monad<UNIF:A::Type ->  Type>) ->
   tf ::<UNIF:R>  ->  Type ->
    tr ::<UNIF:R>  ->  Type ->
     ((nm :: Name ->
        t ::<UNIF:R>  ->  ((tf t) ->  <UNIF:A::Type ->  Type+4>  (tr t)))
       ->
       r ::: {<UNIF:R>} ->
        ((Top.folder[[<UNIF:R>]] r) ->
          ($(map tf r) ->  <UNIF:A::Type ->  Type+3>  $(map tr r)))))
$ head -3 mapr.ur

fun sourceRecord [ r ::: {Type} ] (fl : folder r) (record : $r) :
(transaction $(map source r)) =
            @Monad.mapR  [id] [source] fl  (fn [nm :: Name] [t :: Type]  =>
source  ) fl record


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

Reply via email to