caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Aleksey Nogin <nogin@cs.caltech.edu>
To: gXm <J.Garrett.Morris@Dartmouth.EDU>, Caml List <caml-list@inria.fr>
Subject: Re: [Caml-list] camlp4 'loc' variable
Date: Sun, 22 Feb 2004 17:10:37 -0800	[thread overview]
Message-ID: <4039530D.9000001@cs.caltech.edu> (raw)
In-Reply-To: <30597310@newdasher.Dartmouth.EDU>

On 22.02.2004 10:06, J. Garrett Morris wrote:

> Hello,
> 
> I'm currently writing a set of camlp4 quotations, and I'm running into the "Unbound value 'loc'" error that's been discussed on this list before.  I'm curious about exactly when the loc variable needs to be present, though.  I've got a fair number of helper routines like:
> 
> let processList (l:MLast.expr list):MLast.expr =
>       List.fold_right (fun x l -> <:expr<[$x$ :: $l$]>>) l <:expr<[]>> 
> 
> which are used both in antiquotations and in let statements surrounding expr quotations ... when do I need to take 'loc' as a parameter?

Basically, whenever you have an <:expr< ... >> quotation used an 
expression, it will use the "loc" variable for the "location" part of 
the expression. For example, in your case

<:expr<[$x$ :: $l$]>>
   expands to
MLast.ExApp (loc, MLast.ExApp (loc, MLast.ExUid (loc, "::"), x), l)

and

<:expr<[]>>
   expands to
MLast.ExUid (loc, "[]")

You can find out how camlp4 expands things by running, for example, 
"camlp4 q_MLast.cmo pa_o.cmo pr_o.cmo your_file.ml" - the output will 
contain the "plain" ML code.

Hope this helps.

-- 
Aleksey Nogin

Home Page: http://nogin.org/
E-Mail: nogin@cs.caltech.edu (office), aleksey@nogin.org (personal)
Office: Jorgensen 70, tel: (626) 395-2907

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


      parent reply	other threads:[~2004-02-23  8:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-22 18:06 J. Garrett Morris
2004-02-22 18:57 ` Stefano Zacchiroli
2004-02-23  1:10 ` Aleksey Nogin [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4039530D.9000001@cs.caltech.edu \
    --to=nogin@cs.caltech.edu \
    --cc=J.Garrett.Morris@Dartmouth.EDU \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).