<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//TaxonX//DTD Taxonomic Treatment Publishing DTD v0 20100105//EN" "../../nlm/tax-treatment-NS0.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tp="http://www.plazi.org/taxpub" article-type="research-article" dtd-version="3.0" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">109</journal-id>
      <journal-id journal-id-type="index">urn:lsid:arphahub.com:pub:3dc5f44e-8666-58db-bc76-a455210e8891</journal-id>
      <journal-title-group>
        <journal-title xml:lang="en">JUCS - Journal of Universal Computer Science</journal-title>
        <abbrev-journal-title xml:lang="en">jucs</abbrev-journal-title>
      </journal-title-group>
      <issn pub-type="ppub">0948-695X</issn>
      <issn pub-type="epub">0948-6968</issn>
      <publisher>
        <publisher-name>Journal of Universal Computer Science</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.3217/jucs-006-04-0433</article-id>
      <article-id pub-id-type="publisher-id">27671</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Research Article</subject>
        </subj-group>
        <subj-group subj-group-type="scientific_subject">
          <subject>D.1 - PROGRAMMING TECHNIQUES</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Functional Reading of Logic Programs</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Seres</surname>
            <given-names>Silvija</given-names>
          </name>
          <email xlink:type="simple">silvija.seres@comlab.ox.ac.uk</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Spivey</surname>
            <given-names>Michael</given-names>
          </name>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="A1">
        <label>1</label>
        <addr-line content-type="verbatim">Oxford University Computing Laboratory, Wolfson Building, Parks Road, Oxford, United Kingdom</addr-line>
        <institution>Oxford University Computing Laboratory, Wolfson Building, Parks Road</institution>
        <addr-line content-type="city">Oxford</addr-line>
        <country>United Kingdom</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Silvija Seres (<email xlink:type="simple">silvija.seres@comlab.ox.ac.uk</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2000</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>28</day>
        <month>04</month>
        <year>2000</year>
      </pub-date>
      <volume>6</volume>
      <issue>4</issue>
      <fpage>433</fpage>
      <lpage>446</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/271CBDBB-27B0-59DF-A340-EDB864C687BD">271CBDBB-27B0-59DF-A340-EDB864C687BD</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/6995823">6995823</uri>
      <permissions>
        <copyright-statement>Silvija Seres, Michael Spivey</copyright-statement>
        <license license-type="creative-commons-attribution" xlink:href="" xlink:type="simple">
          <license-p>This article is freely available under the J.UCS Open Content License.</license-p>
        </license>
      </permissions>
      <abstract>
        <label>Abstract</label>
        <p>We propose an embedding of logic programming into lazy functional programming in which each predicate in a Prolog program becomes a Haskell function, in such a way that both the declarative and the procedural reading of the Prolog predicate are preserved.  The embedding computes by means of operations on lazy lists. The state of each step in computation is passed on as a stream of answer substitutions, and all the logic operators of Prolog are implemented by explicit Haskell operators on these streams. The search strategy can be changed by altering the basic types of the embedding and the implementation of these operators. This model results in a perspicuous semantics for logic programs, and serves as a good example of modularisation in functional programming.</p>
      </abstract>
    </article-meta>
  </front>
</article>
