Standard version of HTML Tidy for SRFI documents Lassi Kortela (11 Sep 2020 05:41 UTC)
Re: Standard version of HTML Tidy for SRFI documents Arthur A. Gleckler (11 Sep 2020 15:52 UTC)
Re: Standard version of HTML Tidy for SRFI documents Marc Nieper-Wißkirchen (11 Sep 2020 16:00 UTC)
Re: Standard version of HTML Tidy for SRFI documents Arthur A. Gleckler (11 Sep 2020 18:45 UTC)
Re: Standard version of HTML Tidy for SRFI documents Arthur A. Gleckler (12 Sep 2020 02:00 UTC)
Re: Standard version of HTML Tidy for SRFI documents Marc Nieper-Wißkirchen (12 Sep 2020 07:45 UTC)
Re: Standard version of HTML Tidy for SRFI documents Arthur A. Gleckler (12 Sep 2020 13:45 UTC)
Re: Standard version of HTML Tidy for SRFI documents Lassi Kortela (12 Sep 2020 13:47 UTC)
Re: Standard version of HTML Tidy for SRFI documents Arthur A. Gleckler (12 Sep 2020 15:21 UTC)
Re: Standard version of HTML Tidy for SRFI documents Marc Nieper-Wißkirchen (12 Sep 2020 16:45 UTC)
Re: Standard version of HTML Tidy for SRFI documents Arthur A. Gleckler (12 Sep 2020 18:36 UTC)
Re: Standard version of HTML Tidy for SRFI documents Marc Nieper-Wißkirchen (12 Sep 2020 19:12 UTC)
Re: Standard version of HTML Tidy for SRFI documents Marc Nieper-Wißkirchen (12 Sep 2020 19:47 UTC)

Re: Standard version of HTML Tidy for SRFI documents Marc Nieper-Wißkirchen 12 Sep 2020 16:44 UTC

Of course, I had to try out your validator, so I wrote a short SRFI,
which I had in the back of my mind for some time now. It just
standardized libraries where various extensions of the syntax-rules
macro facility can be found by application code. You just have to
replace "###" with the next free SRFI number. :)

Thanks,

Marc

****

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>SRFI ###: Namespaces for Scheme Macro Systems</title>
    <link href="/favicon.png" rel="icon" sizes="192x192" type="image/png">
    <link rel="stylesheet" href="https://srfi.schemers.org/srfi.css"
type="text/css">
    <meta name="viewport" content="width=device-width, initial-scale=1"></head>
  <body>
    <h1><a href="https://srfi.schemers.org/"><img class="srfi-logo"
src="https://srfi.schemers.org/srfi-logo.svg" alt="SRFI logo"
/></a>###: Namespaces for Scheme Macro Systems</h1>

    <p>by Marc Nieper-Wißkirchen</p>

    <h2 id="status">Status</h2>

    <h2 id="abstract">Abstract</h2>

    <p>This SRFI defines library name spaces where common extensions
      of the <code>syntax-rules</code> macro facility can be located
      and which can be tested against in <code>cond-expand</code> forms.
    </p>

    <h2 id="issues">Issues</h2>

    <h2 id="rationale">Rationale</h2>

    <p>Various Scheme implementations define extensions to
      the <code>syntax-rules</code> macro facility that can be found
      in <a href="https://small.r7rs.org/">R7RS</a>, for
      example explicit renaming macros, <code>syntax-case</code>,
      identifier macros or variable transformers.  While different
      implementation of the same extension will usually be compatible,
      they cannot usually be found under the same namespace.</p>

    <p>This SRFI therefore defines a number of standard libraries
      under which supporting implementations export the identifiers of
      those <code>syntax-rules</code> extensions they implement so
      that portable code can be written without loading implementation
      specific libraries.
    </p>

    <p>It's not the purpose of this SRFI to define the meaning of
      these identifiers as these are documented elsewhere by the
      various extensions to <code>syntax-rules</code>.
    </p>

    <h2 id="specification">Specification</h2>

    <h3>Libraries</h3>

    <p>An implementation does not have to provide all the libraries
      below.  If it provides a library, it has to provide it as a
      whole and not just a subset of it.</p>

    <p><code>(srfi ### er-macro-transformer)</code></p>

    <p>The <code>er-macro-transformer</code> facility as documented by
      William Clinger
      in <cite><a
href="http://mumble.net/~campbell/tmp/clinger91exrename.pdf">Hygienic
      Macros Through Explicit Renaming</a></cite>.
      Exports the identifiers</p>

    <ul>
      <li><code>er-macro-transformer</code></li>
      <li><code>identifier?</code></li>
    </ul>

    <p><code>(srfi ### syntax-case)</code></p>

    <p>The <code>syntax-case</code> system as documented in
      the <a href="http://www.r6rs.org">R6RS</a>.  Exports the
      identifiers</p>

    <ul>
      <li><code>syntax-case</code></li>
      <li><code>syntax</code></li>
      <li><code>identifier?</code></li>
      <li><code>bound-identifier=?</code></li>
      <li><code>free-identifier=?</code></li>
      <li><code>syntax-&gt;datum</code></li>
      <li><code>datum-&gt;syntax</code></li>
      <li><code>generate-temporaries</code></li>
      <li><code>with-syntax</code></li>
      <li><code>quasisyntax</code></li>
      <li><code>unsyntax</code></li>
      <li><code>unsyntax-splicing</code></li>
      <li><code>syntax-violation</code></li>
    </ul>

    <p><code>(srfi ### identifier-syntax)</code></p>

    <p>The <code>identifier-syntax</code> transformer documented in
      the R6RS.  If this library is present, a macro transformer will
      be invoked if its associated keyword is referenced as an
      expression.  The more general form
      of <code>identifier-syntax</code> permitting the transformer to
      determine what happens when <code>set!</code> is used, may not
      be available unless the <code>(srfi ###
      variable-transformer)</code> library is present as well.
      Exports the identifier</p>

    <ul>
      <li><code>identifier-syntax</code></li>
    </ul>

    <p><code>(srfi ### variable-transformer)</code></p>

    <p>The <em>variable transformer</em> facility as documented in the
    R6RS.  Exports the identifier</p>

    <ul>
      <li><code>make-variable-transformer</code></li>
    </ul>

    <p><code>(srfi ### with-ellipsis)</code></p>

    <p>The <code>with-ellipsis</code> special
      form <a href="https://www.gnu.org/software/guile/manual/html_node/Syntax-Case.html#Custom-Ellipsis-Identifiers-for-syntax_002dcase-Macros">documented
      by Guile</a>, which allows to express <code>syntax-rules</code>
      with
      its <a href="https://srfi.schemers.org/srfi-46/srfi-46.html">SRFI
      46</a> extensions in terms of <code>syntax-case</code>.
      Exports the identifier</p>

    <ul>
      <li><code>with-ellipsis</code></li>
    </ul>

    <p><code>(srfi ### syntax-parameter)</code></p>

    <p>Syntax parameters as documented
      by <a href="https://srfi.schemers.org/srfi-139/srfi-139.html">SRFI
      139</a>.  Exports the identifiers</p>

    <ul>
      <li><code>define-syntax-parameter</code></li>
      <li><code>syntax-parameterize</code></li>
    </ul>

    <h2 id="implementation">Implementation</h2>

    <p>The implementation is necessarily distinct for every Scheme
      implementation but in any case almost trivial.  The identifiers
      of each supported extension of <code>syntax-rules</code> just
      have to be re-exported in the standardized libraries defined
      above.
    </p>

    <h2 id="acknowledgements">Acknowledgements</h2>

    <p>Thanks to the inventors and implementers of the various
      extensions to the <code>syntax-rules</code> macro facility
      that are covered by this SRFI.
    </p>

    <h2 id="copyright">Copyright</h2>
    <p>&copy; 2020 Marc Nieper-Wißkirchen.</p>

    <p>
      Permission is hereby granted, free of charge, to any person
      obtaining a copy of this software and associated documentation files
      (the "Software"), to deal in the Software without restriction,
      including without limitation the rights to use, copy, modify, merge,
      publish, distribute, sublicense, and/or sell copies of the Software,
      and to permit persons to whom the Software is furnished to do so,
      subject to the following conditions:</p>

    <p>
      The above copyright notice and this permission notice (including the
      next paragraph) shall be included in all copies or substantial
      portions of the Software.</p>
    <p>
      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
      EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
      MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
      NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
      BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
      ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
      CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      SOFTWARE.</p>

    <hr>
    <address>Editor: <a
href="mailto:srfi-editors+at+srfi+dot+schemers+dot+org">Arthur A.
Gleckler</a></address></body></html>

Am Sa., 12. Sept. 2020 um 17:22 Uhr schrieb Arthur A. Gleckler
<xxxxxx@speechcode.com>:
>
> On Sat, Sep 12, 2020 at 6:47 AM Lassi Kortela <xxxxxx@lassi.io> wrote:
>
>>
>> Which variables are those?
>
> validate-html-input-filename and validate-html-output-buffer.  They were unnecessary, anyway.
>>
>> A better version is now at https://github.com/arthurgleckler/validate-html, waiting admission to MELPA.  I'm hoping to eliminate the dependency on Curl, too.
>>
>> Please check the pull requests tab :)
>
>
> Thanks.  I had an almost-finished version of the non-Curl version in the other branch, so I went with that.  I grabbed some of your changes, too, and credited you in the commit log.  The code now works better, is simpler, and has fewer dependencies.  Open source for the win.