<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article"><front><journal-meta><journal-id journal-id-type="publisher-id">INFORMATICA</journal-id><journal-title-group><journal-title>Informatica</journal-title></journal-title-group><issn pub-type="epub">0868-4952</issn><issn pub-type="ppub">0868-4952</issn><publisher><publisher-name>VU</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="publisher-id">INF10102</article-id><article-id pub-id-type="doi">10.3233/INF-1999-10102</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research article</subject></subj-group></article-categories><title-group><article-title>Primitive (Co)Recursion and Course-of-Value (Co)Iteration, Categorically</article-title></title-group><contrib-group><contrib contrib-type="Author"><name><surname>Uustalu</surname><given-names>Tarmo</given-names></name><email xlink:href="mailto:tarmo@it.kth.se">tarmo@it.kth.se</email><xref ref-type="aff" rid="j_INFORMATICA_aff_000"/></contrib><contrib contrib-type="Author"><name><surname>Vene</surname><given-names>Varmo</given-names></name><email xlink:href="mailto:varmo@cs.ut.ee">varmo@cs.ut.ee</email><xref ref-type="aff" rid="j_INFORMATICA_aff_001"/></contrib><aff id="j_INFORMATICA_aff_000">Dept. of Teleinformatics, Royal Inst. of Technology, Electrum 204, SE-164 40 Kista, Sweden</aff><aff id="j_INFORMATICA_aff_001">Inst. of Computer Science, Univ. of Tartu, J. Liivi 2, EE-2484 Tartu, Estonia</aff></contrib-group><pub-date pub-type="epub"><day>01</day><month>01</month><year>1999</year></pub-date><volume>10</volume><issue>1</issue><fpage>5</fpage><lpage>26</lpage><history><date date-type="received"><day>01</day><month>12</month><year>1999</year></date></history><abstract><p>In the mainstream categorical approach to typed (total) functional programming, datatypes are modelled as initial algebras and codatatypes as terminal coalgebras. The basic function definition schemes of iteration and coiteration are modelled by constructions known as catamorphisms and anamorphisms. Primitive recursion has been captured by a construction called paramorphisms. We draw attention to the dual construction of apomorphisms, and show on examples that primitive corecursion is a useful function definition scheme. We also put forward and study two novel constructions, viz., histomorphisms and futumorphisms, that capture the powerful schemes of course-of-value iteration and its dual, respectively, and argue that even these are helpful.</p></abstract><kwd-group><label>Keywords</label><kwd>typed (total) functional programming</kwd><kwd>category theory</kwd><kwd>program calculation</kwd><kwd>(co)data-types</kwd><kwd>forms of (co)recursion</kwd></kwd-group></article-meta></front></article>