Hi. I tried to implement a StateMonad in UrWeb. I've successfully compiled it's basic version
https://github.com/grwlf/urweb-monad-state/blob/master/test/Test2.ur and the advanced one, which operates on top of the transaction monad https://github.com/grwlf/urweb-monad-state/blob/master/test/Test3.ur Finally, I've faced an error while trying to move one step further. I tried to implement a 'monad transformer'. It's goal is to let user choose the underlying monad. Haskell version allows it by defining third datatype parameter with kind (Type -> Type). But looks like it wouldn't work for Ur/Web since UrWeb accepts only Type kinds in this place (but I may have missed some syntax): datatype state m st a = State of (st -> m (st * a)) leads to building test/Test4.exe urweb -dbms sqlite ./test/Test4 /home/grwlf/proj/urweb-monad-state/test/Test4.ur:6:40: (to 6:41) Wrong kind Constructor: m Have kind: Type Need kind: <UNIF:B> -> <UNIF:C> Incompatible kinds Kind 1: Type Kind 2: <UNIF:B> -> <UNIF:C> make[1]: *** [test/Test4.exe] Ошибка 1 make[1]: Выход из каталога `/home/grwlf/proj/urweb-monad-state' make: *** [.fix-multy1] Ошибка 2 Can we do something to allow this kind of monads? Regards, Sergey PS the project root is https://github.com/grwlf/urweb-monad-state _______________________________________________ Ur mailing list [email protected] http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
