[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Groff] condition: OR of two string comparisons
From: |
Steffen Nurpmeso |
Subject: |
Re: [Groff] condition: OR of two string comparisons |
Date: |
Wed, 26 Nov 2014 19:08:31 +0100 |
User-agent: |
s-nail v14.7.8-73-g5bf9347 |
Tadziu Hoffmann <address@hidden> wrote:
|
lots of interesting stuff skipped
|As an aside at the end, I'm surprised that no-one has yet
|pointed out the obvious: we're working with a macro
|processor, where the natural block structuring element
|is not a tacked-on brace structure, but the *macro*!
|And another example, since something similar had come up:
|
| .de inlist?
| .ie \\n(.$<2 .nr result 0
| .el .inlist1 \\$@
| ..
| .de inlist1
| .ie '\\$1'\\$2' .nr result 1
| .el .inlist2 \\$@
| ..
| .de inlist2
| .ds _1 \\$1
| .shift 2
| .inlist? \\*(_1 \\$@
| ..
| .ds fruit apple banana lemon grape
| .ds myfruit lemon
| .inlist? \*[myfruit] \*[fruit]
| .ie \n[result] Yes, ``\*[myfruit]'' is in ``\*[fruit]''.
| .el No, ``\*[myfruit]'' is not in ``\*[fruit]''.
|
|Programming roff is a bit like programming in assembler:
|complex expressions are built up piece by piece using simple
|instructions, and temporary registers are a useful aid, not
|something that must be avoided at all costs.
Nice. But it won't match ".ds myfruit \&lemon", to give one
example. I know of no way to get at the plain "lemon" in
"\&lemon", which is a complete stopper for any generic
programming, whatever conditional or recursive functional approach
there is used. Not being able to return a value is a thing that
i also miss a lot. Having a last-macro-return-value register
would be nice in my opinion. Unfortunately ".return anything" yet
exists and has special semantics, so a ".retval VALUE" or the like
would be necessary. Variables with macro-local (namespace) scope
would also be a real improvement: since you've mentioned the
shell, ".local [ds|nr] xy" comes to mind.
In the end the best would be if any user can use the syntax he
(or she -- really?) likes the most, and it should just work.
So this makes .tostring, .returnval and .local.
--steffen
- Re: [Groff] condition: OR of two string comparisons, (continued)
- Re: [Groff] condition: OR of two string comparisons, Tadziu Hoffmann, 2014/11/20
- Re: [Groff] condition: OR of two string comparisons, Mike Bianchi, 2014/11/20
- Re: [Groff] condition: OR of two string comparisons, Ralph Corderoy, 2014/11/21
- Re: [Groff] condition: OR of two string comparisons, Ralph Corderoy, 2014/11/21
- Re: [Groff] condition: OR of two string comparisons, Peter Schaffter, 2014/11/22
- Re: [Groff] condition: OR of two string comparisons, Tadziu Hoffmann, 2014/11/26
- Re: [Groff] condition: OR of two string comparisons,
Steffen Nurpmeso <=
- Re: [Groff] condition: OR of two string comparisons, Tadziu Hoffmann, 2014/11/26
- Re: [Groff] condition: OR of two string comparisons, James K. Lowden, 2014/11/26
- Re: [Groff] condition: OR of two string comparisons, Werner LEMBERG, 2014/11/29
Re: [Groff] condition: OR of two string comparisons, Carsten Kunze, 2014/11/19
Re: [Groff] condition: OR of two string comparisons, Carsten Kunze, 2014/11/21