On Fri, Jul 25, 2014 at 7:18 AM, Michael Norrish <
michael.norr...@nicta.com.au> wrote:

> No, the overload_on approach works.
>

Confirmed. Thanks!


> It works because the handling of list$NIL chooses the name "LaTeXNIL" for
> it,
> and this isn't then picked up by the concrete syntax phase (only "NIL" is).
>

I see.


>
> Normal lists will print as per the list-form rule.
>
> Michael
>
> On 25/07/14 16:10, Ramana Kumar wrote:
> > I am already using a special "pretty-printing" theory when creating my
> munger,
> > but I still don't know what to put in it to change printing of the empty
> list.
> > (In your email you explained why all the code snippets you provided
> don't work.)
> >
> > It sounds like there's no way to change how the empty list is printed
> without
> > removing the listform rule (and can it even be removed?), but of course
> I want
> > the listform rule for non-empty lists.
> >
> > I think the tiny-space idea sounds like too much of a special case. What
> we
> > would want is general mechanisms for overriding the printer's behaviour
> that
> > don't have to anticipate why we want to do it.
> >
> > If I understand correctly, what is missing is some way to give
> preference to an
> > overload over a listform.
> >
> >
> > On Fri, Jul 25, 2014 at 3:22 AM, Michael Norrish <
> michael.norr...@nicta.com.au
> > <mailto:michael.norr...@nicta.com.au>> wrote:
> >
> >     When the term list$NIL is encountered, the first phase of turning
> this into a
> >     string is to figure out which name to render it with.  The overload
> data
> >     structure says that "NIL" should be used.  The concrete syntax
> grammar is then
> >     consulted for rules pertaining to NIL.  The only rule it will find
> is the
> >     list-form version, and this will be used.
> >
> >     Unfortunately, if there is a list rule for a bare term (like NIL) it
> will always
> >     be used in preference to any other possible rules.  So, even if you
> did
> >     something like
> >
> >         add_rule {block_style = (AroundEachPhrase, (PP.CONSISTENT, 2)),
> >                   fixity = Closefix,
> >                   paren_style = OnlyIfNecessary,
> >                   pp_elements = [TOK "fooNIL"], term_name = "NIL"};
> >
> >     it wouldn’t work, and you’d still get “[]”.  Given the wordiness of
> the above,
> >     even if it worked, I’d have thought that
> >
> >         val _ = overload_on("LaTeXNIL", ``[]``);
> >         val _ = TeX_notation {hol = "LaTeXNil", TeX =
> ("\\ensuremath{[\,]}", 2)};
> >
> >     would be preferable.  You still need to do the analogue of the
> second line above
> >     for the first solution too.
> >
> >     I take the point that nice LaTeX for [] would be preferable without
> having to do
> >     anything at all.
> >
> >     One option might be to have the pretty-printing backends provide a
> “tiny-space”
> >     API point.  All but the TeX backends would do nothing with this, but
> the TeX
> >     backend could generate a \, or whatever.  The pretty-printer could
> then be
> >     relied to generate a tiny-space every time two tokens followed each
> other
> >     without interruption.   Or perhaps the tiny-space would only appear
> between
> >     list-form delimiters.  Or perhaps users could call for it explicitly
> in grammar
> >     rules...
> >
> >     Another option would be to maintain a set of TeX deltas
> (accompanying theories
> >     as they were saved and loaded).  These deltas could be overlaid on
> the standard
> >     grammar when TeX-pretty-printing was due to happen.  This would
> allow maximum
> >     flexibility because the normal-use grammars wouldn’t get
> contaminated at all,
> >     and weird pretty-printing stuff could be kept in its own silo.  You
> can emulate
> >     this a little at the moment by creating parallel PrettyPrinting
> theories that
> >     only get pulled in when creating a TeX munger.
> >
> >     Michael
> >
> >
> >     On 25/07/14 03:54, Ramana Kumar wrote:
> >     > In fact I wouldn't need a new overload; if I could just get the
> pretty-printer
> >     > to print the empty list as "NIL" I would be fine.
> >
> >     > But I haven't been able to do that. How do you get the
> pretty-printer to stop
> >     > using the add_listform rule for NIL while retaining it for
> non-empty lists?
> >     > I tried prefer_form_with_tok but it didn't work.
> >
> >
> >     > On Thu, Jul 24, 2014 at 3:47 PM, Michael Norrish
> >     <michael.norr...@nicta.com.au <mailto:michael.norr...@nicta.com.au>
> >     > <mailto:michael.norr...@nicta.com.au
> >     <mailto:michael.norr...@nicta.com.au>>> wrote:
> >
> >     >     The latter is how I've done this in the past.
> >
> >     >     Michael
> >
> >     >     > On 24 Jul 2014, at 22:16, "Ramana Kumar" <
> ramana.ku...@cl.cam.ac.uk
> >     <mailto:ramana.ku...@cl.cam.ac.uk>
> >     >     <mailto:ramana.ku...@cl.cam.ac.uk <mailto:
> ramana.ku...@cl.cam.ac.uk>>>
> >     wrote:
> >     >     >
> >     >     > HOL's pretty-printer usually prints the empty list as "[]",
> which I
> >     >     believe is produced by two separate tokens (one for each
> bracket) via a
> >     >     "listform" parsing/printing rule.
> >     >     >
> >     >     > In LaTeX math mode (generated using HOL's math mode munger)
> "[]"
> >     does not
> >     >     look nice: it needs a bit of space inside. What would be the
> best approach
> >     >     to making the printer generate such space? Could I, perhaps,
> override the
> >     >     empty list (but not other lists) with a special token that I
> can then
> >     >     override to some custom LaTeX? Or perhaps there's a better way?
> >     >     >
> >
> ------------------------------------------------------------------------------
> >     >     > Want fast and easy access to all the code in your
> enterprise? Index and
> >     >     > search up to 200,000 lines of code with a free copy of Black
> Duck
> >     >     > Code Sight - the same software that powers the world's
> largest code
> >     >     > search on Ohloh, the Black Duck Open Hub! Try it now.
> >     >     > http://p.sf.net/sfu/bds
> >     >     > _______________________________________________
> >     >     > hol-info mailing list
> >     >     > hol-info@lists.sourceforge.net
> >     <mailto:hol-info@lists.sourceforge.net>
> >     <mailto:hol-info@lists.sourceforge.net <mailto:
> hol-info@lists.sourceforge.net>>
> >     >     > https://lists.sourceforge.net/lists/listinfo/hol-info
> >
> >     >     ________________________________
> >
> >     >     The information in this e-mail may be confidential and subject
> to legal
> >     >     professional privilege and/or copyright. National ICT
> Australia Limited
> >     >     accepts no liability for any damage caused by this email or its
> >     attachments.
> >
> >     ________________________________
> >
> >     The information in this e-mail may be confidential and subject to
> legal
> >     professional privilege and/or copyright. National ICT Australia
> Limited
> >     accepts no liability for any damage caused by this email or its
> attachments.
> >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> > Want fast and easy access to all the code in your enterprise? Index and
> > search up to 200,000 lines of code with a free copy of Black Duck
> > Code Sight - the same software that powers the world's largest code
> > search on Ohloh, the Black Duck Open Hub! Try it now.
> > http://p.sf.net/sfu/bds
> >
> >
> >
> > _______________________________________________
> > hol-info mailing list
> > hol-info@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/hol-info
> >
>
>
> ________________________________
>
> The information in this e-mail may be confidential and subject to legal
> professional privilege and/or copyright. National ICT Australia Limited
> accepts no liability for any damage caused by this email or its attachments.
>
------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to