I've tried xml, body, and xhtml. Is there some other type I can try? If I simply define sidebar inside template, the project will compile and run correctly.
The source is available here if it's helpful: https://github.com/jprider63/UMDTalks Here's the full error message: /home/james/Projects/UMDTalks/common.urs:4:32-4:35: Wrong kind Constructor: Basis.xml Have kind: {Unit} -> {Type} -> {Type} -> Type Need kind: Type Incompatible kinds Kind 1: {Unit} -> {Type} -> {Type} -> Type Kind 2: Type /home/james/Projects/UMDTalks/common.ur:10:0-50:0: Constructor unification failure in signature matching: Have: val template : ((Basis.option Basis.string) -> ((Basis.xml ([#Body = ()]) <UNIF:U0::{Type}> <UNIF:U2::{Type}>) -> <UNIF:F::Type -> Type> (Basis.xml ([#Html = ()]) <UNIF:U0::{Type}> <UNIF:U2::{Type}>))) Need: val template : ((Basis.option Basis.string) -> (Basis.xml -> Basis.transaction (Basis.xml ([#Html = ()]) ([]) ([])))) Con 1: ((Basis.option Basis.string) -> ((Basis.xml ([#Body = ()]) <UNIF:U0::{Type}> <UNIF:U2::{Type}>) -> <UNIF:F::Type -> Type> (Basis.xml ([#Html = ()]) <UNIF:U0::{Type}> <UNIF:U2::{Type}>))) Con 2: ((Basis.option Basis.string) -> (Basis.xml -> Basis.transaction (Basis.xml ([#Html = ()]) ([]) ([])))) Incompatible constructors Have: Basis.xml ([#Body = ()]) <UNIF:U0::{Type}> <UNIF:U2::{Type}> Need: Basis.xml /home/james/Projects/UMDTalks/umdtalks.ur:33:1-34:38: Unification failure Expression: fn sidebar : Basis.xml => Common.template (Some [Basis.string] "test") sidebar Have con: (Basis.xml -> Basis.transaction (Basis.xml ([#Html = ()]) ([]) ([]))) Need con: ((Basis.xml (([#Body = ()]) ++ <UNIF:U10::{Unit}>) <UNIF:U2::{Type}> ([])) -> <UNIF:S::Type -> Type> <UNIF:U::Type>) Incompatible constructors Have: Basis.xml Need: Basis.xml (([#Body = ()]) ++ <UNIF:U10::{Unit}>) <UNIF:U2::{Type}> I've been finding it somewhat difficult to understand what the error messages are looking for. Are the type inferencing messages a result of the wrong signature type? Thanks, JP On Dec 6, 2011, at 8:40 AM, Adam Chlipala wrote: > James Parker wrote: >> title'<- return (case title of >> | None => "UMDTalks" >> | Some t => String.append t " - UMDTalks" >> > > Here I would recommend the infix operator [^] instead of [String.append]. > >> My current function signature is: >> >> val template : option string -> xml -> transaction page >> >> I believe the problem is in the signature. I guess what is the proper type >> for the second parameter? >> > > You probably want [xbody] instead of [xml]. You can look in lib/ur/basis.urs > to see the kinds of all the built-in constructors. > > _______________________________________________ > Ur mailing list > [email protected] > http://www.impredicative.com/cgi-bin/mailman/listinfo/ur _______________________________________________ Ur mailing list [email protected] http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
