From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id EDBC6BC37 for ; Mon, 8 Feb 2010 18:10:20 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqIBADfUb0vRVdO+kGdsb2JhbACPH4IIghKHSzwBAQEBCQkMBxMDrUSBSoQsiHEBAQMFhE8EiVw X-IronPort-AV: E=Sophos;i="4.49,431,1262559600"; d="diff'?scan'208";a="43906896" Received: from mail-yw0-f190.google.com ([209.85.211.190]) by mail2-smtp-roc.national.inria.fr with ESMTP; 08 Feb 2010 18:10:20 +0100 Received: by ywh28 with SMTP id 28so5626879ywh.30 for ; Mon, 08 Feb 2010 09:10:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=CuUaC6caqSEWUnNMltFSoQnCVKGUAnZJjTy7E0VANyk=; b=Qm8gNt3UEb9IMshju+CmYlLSVMPPIi4427wvD7irrh1WfrKTIHbZGpSfWO9PmGUrzN mAE50qU7jDyb6/2Qvk4xZxPUBrDlYKerJWaY57SjbpiIjwj6WP2iQkrE1eo+OHLDmK4O AcKQ/t4SfMLFkmn7bA3p43QNuY0VxD3Yl6G/E= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=kEgirIN53lAzMzohln8PD/ywzAeYJUhPSWydy5mdSG5ucOOFqp7VDACXYHxUXbo5qO 7FBlvZp7Lmqgub5+YHQiSAW9C6LAm3Hq7BDddSatXpsEkSy75gwvTLqDKQ4Zmj8QrQsl K+84nqUQHviGIUNM0/70HeapXKLyRHnYLWZ9k= MIME-Version: 1.0 Received: by 10.101.51.7 with SMTP id d7mr1297013ank.201.1265648644007; Mon, 08 Feb 2010 09:04:04 -0800 (PST) In-Reply-To: <4B6FF97F.7010202@citycable.ch> References: <4B6FF97F.7010202@citycable.ch> Date: Mon, 8 Feb 2010 18:04:03 +0100 Message-ID: <527cf6bc1002080904x4271889bu804117c3abe56d22@mail.gmail.com> Subject: Re: [Caml-list] camlp4 unbound value From: blue storm To: guillaume.yziquel@citycable.ch Cc: OCaml List Content-Type: multipart/mixed; boundary=001636eee264d625f1047f19c91d X-Spam: no; 0.00; camlp:01 camlp:01 guillaume:01 guillaume:01 algebra:01 toplevel:01 ocaml:01 topfind:01 findlib:01 syntax:01 syntax:01 topfind:01 usr:01 lib:01 ocaml:01 X-Attachments: type="application/octet-stream" name="typeconv_module.diff" name="typeconv_module.diff" --001636eee264d625f1047f19c91d Content-Type: text/plain; charset=ISO-8859-1 The problem I've seen when testing your code is slightly different from the one you reported : Camlp4 choke on the "Relational.Conv_..." string as containing different identifiers. The problem is that "A.B" is not a legal uid, so you can't use it in a $uid:...$ antiquotation. I've fixed this by using an Ast.ident instead of a string for the type_conv value of the DB module. Hand-made diff attached. On 2/8/10, Guillaume Yziquel wrote: > Hi. This is for camlp4 gurus: > > I've been using a modified version of Mauricio Fernandez' relational > algebra camlp4 extension for postgresql. (I'm trying to adapt it to > another database system, so I've functorised a bit of the original code). > > You can find the modified code and a Debian package at: > > http://yziquel.homelinux.org/debian/pool/main/o/ocaml-relational/ > http://yziquel.homelinux.org/gitweb?p=ocaml-relational.git;a=summary > > My question is the following: Relational.Conv_Postgresql.encode_int is > properly defined, and available from the toplevel, and yet considered > unbound in the camlp4-generated code. > > How can this be? > > >> yziquel@seldon:~$ ocaml >> Objective Caml version 3.11.1 >> >> # #use "topfind";; >> - : unit = () >> Findlib has been successfully loaded. Additional directives: >> #require "package";; to load a package >> #list;; to list the available packages >> #camlp4o;; to load camlp4 (standard syntax) >> #camlp4r;; to load camlp4 (revised syntax) >> #predicates "p,q,...";; to set these predicates >> Topfind.reset();; to force that packages will be reloaded >> #thread;; to enable threads >> >> - : unit = () >> # #thread;; >> /usr/lib/ocaml/threads: added to search path >> /usr/lib/ocaml/unix.cma: loaded >> /usr/lib/ocaml/threads/threads.cma: loaded >> # #camlp4o;; >> /usr/lib/ocaml/dynlink.cma: loaded >> /usr/lib/ocaml/camlp4: added to search path >> /usr/lib/ocaml/camlp4/camlp4o.cma: loaded >> Camlp4 Parsing version 3.11.1 >> >> # #require "relational.postgresql";; >> /usr/lib/ocaml/pcre: added to search path >> /usr/lib/ocaml/pcre/pcre.cma: loaded >> /usr/lib/ocaml/netsys: added to search path >> /usr/lib/ocaml/netsys/netsys.cma: loaded >> /usr/lib/ocaml/netstring: added to search path >> /usr/lib/ocaml/netstring/netstring.cma: loaded >> /usr/lib/ocaml/netstring/netstring_mt.cmo: loaded >> /usr/lib/ocaml/netstring/netstring_top.cmo: loaded >> /usr/lib/ocaml/netstring/netaccel.cma: loaded >> /usr/lib/ocaml/netstring/netaccel_link.cmo: loaded >> /usr/lib/ocaml/relational: added to search path >> /usr/lib/ocaml/relational/relational.cma: loaded >> /usr/lib/ocaml/postgresql: added to search path >> /usr/lib/ocaml/postgresql/postgresql.cma: loaded >> /usr/lib/ocaml/relational/pa_relational.cmo: loaded >> /usr/lib/ocaml/relational/pa_relational_postgresql.cmo: loaded >> # TABLE user users COLUMN id SERIAL AUTO PRIMARY KEY END;; >> Error: Unbound value Relational.Conv_Postgresql.encode_int >> # module X = Relational.Conv_Postgresql;; >> module X : >> sig >> val encode_string : string -> string >> val decode_string : string -> string >> val decode_bool : string -> bool >> val encode_bool : bool -> string >> val encode_int : int -> string >> val decode_int : string -> int >> val encode_float : float -> string >> val decode_float : string -> float >> val encode_nullable : ('a -> string) -> 'a option -> string >> val decode_timestamp : string -> float >> val decode_timestampz : string -> float >> val encode_timestamp : float -> string >> val encode_timestampz : float -> string >> val decode_time : string -> float >> val decode_timez : string -> float >> val encode_time : float -> string >> val encode_timez : float -> string >> val decode_date : string -> Relational.Types.date >> val encode_date : Relational.Types.date -> string >> end >> # Relational.Conv_Postgresql.encode_int;; >> - : int -> string = >> # > > -- > Guillaume Yziquel > http://yziquel.homelinux.org/ > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > --001636eee264d625f1047f19c91d Content-Type: application/octet-stream; name="typeconv_module.diff" Content-Disposition: attachment; filename="typeconv_module.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 TGVzIHNvdXMtcsOpcGVydG9pcmVzIG9jYW1sLXJlbGF0aW9uYWwtMC4xL2RlYmlhbiBldCBvY2Ft bC1yZWxhdGlvbmFsLTAuMS1uZXcvZGViaWFuIHNvbnQgaWRlbnRpcXVlcy4KTGVzIGZpY2hpZXJz IGJpbmFpcmVzIG9jYW1sLXJlbGF0aW9uYWwtMC4xLy5vbWFrZWRiIGV0IG9jYW1sLXJlbGF0aW9u YWwtMC4xLW5ldy8ub21ha2VkYiBzb250IGRpZmbDqXJlbnRzLgpkaWZmIC11IG9jYW1sLXJlbGF0 aW9uYWwtMC4xLy5vbWFrZWRiLmxvY2sgb2NhbWwtcmVsYXRpb25hbC0wLjEtbmV3Ly5vbWFrZWRi LmxvY2sKLS0tIG9jYW1sLXJlbGF0aW9uYWwtMC4xLy5vbWFrZWRiLmxvY2sJMjAxMC0wMi0wOCAx Mjo1MTozMS4wMDAwMDAwMDAgKzAxMDAKKysrIG9jYW1sLXJlbGF0aW9uYWwtMC4xLW5ldy8ub21h a2VkYi5sb2NrCTIwMTAtMDItMDggMTg6MDE6MjMuMDAwMDAwMDAwICswMTAwCkBAIC0xICsxIEBA Ci0qKiogb21ha2U6IHRoZSBwcm9qZWN0IHdhcyBsYXN0IGxvY2tlZCBieSBzZWxkb246MTQ5Njgu CisqKiogb21ha2U6IHRoZSBwcm9qZWN0IHdhcyBsYXN0IGxvY2tlZCBieSBsb2NhbGhvc3Q6MjQ0 Ny4KZGlmZiAtdSBvY2FtbC1yZWxhdGlvbmFsLTAuMS9wYV9yZWxhdGlvbmFsLm1sIG9jYW1sLXJl bGF0aW9uYWwtMC4xLW5ldy9wYV9yZWxhdGlvbmFsLm1sCi0tLSBvY2FtbC1yZWxhdGlvbmFsLTAu MS9wYV9yZWxhdGlvbmFsLm1sCTIwMTAtMDItMDggMTI6NTE6MzIuMDAwMDAwMDAwICswMTAwCisr KyBvY2FtbC1yZWxhdGlvbmFsLTAuMS1uZXcvcGFfcmVsYXRpb25hbC5tbAkyMDEwLTAyLTA4IDE3 OjU4OjQyLjAwMDAwMDAwMCArMDEwMApAQCAtMTE2LDcgKzExNiw3IEBACiBlbmQKIAogbW9kdWxl IHR5cGUgREIgPSBzaWcKLSAgdmFsIHR5cGVjb252X21vZHVsZSA6IHN0cmluZworICB2YWwgdHlw ZWNvbnZfbW9kdWxlIDogTG9jLnQgLT4gQXN0LmlkZW50CiBlbmQKIAogbW9kdWxlIENvZGVnZW5i YXNlIChEQiA6IERCKSA6IENPREVHRU5CQVNFID0KQEAgLTM3NCw3ICszNzQsNyBAQAogICAgICAg U29tZSBzIC0+IDw6ZXhwcjwgJGxpZDpwcmVmaXggXiBsb3dlcmNhc2VfdG9fc3RyaW5nIHMkID4+ CiAgICAgfCBOb25lIC0+CiAgICAgICAgIGxldCBmID0gcHJlZml4IF4gY29sdW1uX2NvbnZfdHlw ZW5hbWUgdCBpbgotICAgICAgICAgIDw6ZXhwcjwgJGlkOiA8OmlkZW50PCAkdWlkOkRCLnR5cGVj b252X21vZHVsZSQuJGxpZDpmJCA+PiAkID4+CisgICAgICAgICAgPDpleHByPCAkaWQ6IDw6aWRl bnQ8ICREQi50eXBlY29udl9tb2R1bGUgX2xvYyQuJGxpZDpmJCA+PiAkID4+CiAgICAgICAgICAg KCo8OmV4cHI8IFJlbGF0aW9uYWwuVHlwZWNvbnYuUG9zdGdyZXNxbC4kbGlkOmYkID4+KikKIAog ICBsZXQgY29sX251bGxhYmxlIHQgPSB0LmNvbF90eXBlLmNvbF9udWxsYWJsZQpAQCAtMTA1NSw0 ICsxMDU1LDQgQEAKICAgQ2FtbHA0Lk9wdGlvbnMuYWRkICItLXVuc2FmZS1yZWxhdGlvbnMiCiAg ICAgKEFyZy5Vbml0IChmdW4gKCkgLT4gdXNlX3R5cGVfY29uc3RyYWludF9mdW5jcyA6PSBmYWxz ZSkpCiAgICAgIkRvIG5vdCB0eXBlLWNoZWNrIHJlbGF0aW9uYWwgYWxnZWJyYSBleHByZXNzaW9u cy4iCi1lbmQKXCBQYXMgZGUgZmluIGRlIGxpZ25lIMOgIGxhIGZpbiBkdSBmaWNoaWVyLgorZW5k CmRpZmYgLXUgb2NhbWwtcmVsYXRpb25hbC0wLjEvcGFfcmVsYXRpb25hbF9tb25ldGRiNS5tbCBv Y2FtbC1yZWxhdGlvbmFsLTAuMS1uZXcvcGFfcmVsYXRpb25hbF9tb25ldGRiNS5tbAotLS0gb2Nh bWwtcmVsYXRpb25hbC0wLjEvcGFfcmVsYXRpb25hbF9tb25ldGRiNS5tbAkyMDEwLTAyLTA4IDEy OjUxOjMyLjAwMDAwMDAwMCArMDEwMAorKysgb2NhbWwtcmVsYXRpb25hbC0wLjEtbmV3L3BhX3Jl bGF0aW9uYWxfbW9uZXRkYjUubWwJMjAxMC0wMi0wOCAxNzo1OTo1MC4wMDAwMDAwMDAgKzAxMDAK QEAgLTUsOSArNSw3IEBACiBzdHJ1Y3QKIAogICBtb2R1bGUgREIgPSBzdHJ1Y3QKLQotICAgIGxl dCB0eXBlY29udl9tb2R1bGUgPSAiUmVsYXRpb25hbC5Db252X01vbmV0REI1IgotCisgICAgbGV0 IHR5cGVjb252X21vZHVsZSBfbG9jID0gPDppZGVudDwgUmVsYXRpb25hbC5Db252X01vbmV0REI1 ID4+CiAgIGVuZAogCiAgIGluY2x1ZGUgQ29kZWdlbmJhc2UoREIpCmRpZmYgLXUgb2NhbWwtcmVs YXRpb25hbC0wLjEvcGFfcmVsYXRpb25hbF9wb3N0Z3Jlc3FsLm1sIG9jYW1sLXJlbGF0aW9uYWwt MC4xLW5ldy9wYV9yZWxhdGlvbmFsX3Bvc3RncmVzcWwubWwKLS0tIG9jYW1sLXJlbGF0aW9uYWwt MC4xL3BhX3JlbGF0aW9uYWxfcG9zdGdyZXNxbC5tbAkyMDEwLTAyLTA4IDEyOjUxOjMyLjAwMDAw MDAwMCArMDEwMAorKysgb2NhbWwtcmVsYXRpb25hbC0wLjEtbmV3L3BhX3JlbGF0aW9uYWxfcG9z dGdyZXNxbC5tbAkyMDEwLTAyLTA4IDE3OjU4OjU1LjAwMDAwMDAwMCArMDEwMApAQCAtNSw5ICs1 LDcgQEAKIHN0cnVjdAogCiAgIG1vZHVsZSBEQiA9IHN0cnVjdAotCi0gICAgbGV0IHR5cGVjb252 X21vZHVsZSA9ICJSZWxhdGlvbmFsLkNvbnZfUG9zdGdyZXNxbCIKLQorICAgIGxldCB0eXBlY29u dl9tb2R1bGUgX2xvYyA9IDw6aWRlbnQ8IFJlbGF0aW9uYWwuQ29udl9Qb3N0Z3Jlc3FsID4+CiAg IGVuZAogCiAgIGluY2x1ZGUgQ29kZWdlbmJhc2UoREIpCkxlcyBzb3VzLXLDqXBlcnRvaXJlcyBv Y2FtbC1yZWxhdGlvbmFsLTAuMS90ZXN0IGV0IG9jYW1sLXJlbGF0aW9uYWwtMC4xLW5ldy90ZXN0 IHNvbnQgaWRlbnRpcXVlcy4K --001636eee264d625f1047f19c91d--