HaRe-0.6: refactorer/PwPf/docs/Pointfree.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><TITLE
>Pointfree</TITLE
><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"
></HEAD
><BODY
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "topbar"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD
><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "
></TD
><TD CLASS = "title"
></TD
><TD CLASS = "topbut"
><A HREF = "index.html"
>Contents</A
></TD
><TD CLASS = "topbut"
><A HREF = "doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "modulebar"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD
><FONT SIZE = "6"
>Pointfree</FONT
></TD
><TD ALIGN = "right"
><TABLE CLASS = "narrow" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "infohead"
>Portability</TD
><TD CLASS = "infoval"
> portable</TD
></TR
><TR
><TD CLASS = "infohead"
>Stability</TD
><TD CLASS = "infoval"
> experimental</TD
></TR
><TR
><TD CLASS = "infohead"
>Maintainer</TD
><TD CLASS = "infoval"
> jproenca@di.uminho.pt</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF = "#1"
>Data Type</A
></DT
><DT
><A HREF = "#2"
>Conversion of a <A HREF = "PFTerm.html"
>PFTerm</A
> to an haskell expression</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
>Description</TD
></TR
><TR
><TD CLASS = "doc"
>A syntax of a general pointfree language.
</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
>Synopsis</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>data</SPAN
> <A HREF = "#t%3APFTerm"
>PFTerm</A
> </TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
>= <A HREF = "#v%3ABANG"
>BANG</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AID"
>ID</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AAPP"
>APP</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3ACurry"
>Curry</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3A%3A.%3A"
>(:.:)</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3A%3A%5C%2F%3A"
>(:\/:)</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3A%3A%2F%5C%3A"
>(:/\:)</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AFST"
>FST</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3ASND"
>SND</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AINL"
>INL</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AINR"
>INR</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AIN"
>IN</A
> HsExpP</TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AOUT"
>OUT</A
> HsExpP</TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3APARA"
>PARA</A
> HsExpP <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AFIX"
>FIX</A
></TD
></TR
><TR
><TD CLASS = "decl"
>| <A HREF = "#v%3AMacro"
>Macro</A
> String</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s8"
></TD
></TR
><TR
><TD CLASS = "decl"
><A HREF = "#v%3Apf2Exp"
>pf2Exp</A
> :: <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
> -> HsExpI PNT</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "1"
>Data Type</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "doc"
><P
>Represents a pointfree language where:
</P
><OL
><LI
> products and sums are treated
</LI
><LI
> base types are obtained and decomposed by the use of the <EM
>IN</EM
> and
<EM
>OUT</EM
> constructors
</LI
><LI
> recursion can be expressed by the point-fix function or by a paramorphism
</LI
><LI
> free variables are called macros and represent known pointfree expressions
</LI
></OL
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><SPAN CLASS = "keyword"
>data</SPAN
> <A NAME = "t%3APFTerm"
></A
><B
>PFTerm</B
> </TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
><TR
><TD CLASS = "section4"
>Constructors</TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
><A NAME = "v%3ABANG"
></A
><B
>BANG</B
></TD
><TD CLASS = "rdoc"
>Constant function that returns Unit</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AID"
></A
><B
>ID</B
></TD
><TD CLASS = "rdoc"
>Identity</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AAPP"
></A
><B
>APP</B
></TD
><TD CLASS = "rdoc"
>Apply</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3ACurry"
></A
><B
>Curry</B
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
><TD CLASS = "rdoc"
>Curry</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3A%3A.%3A"
></A
><B
>(:.:)</B
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
><TD CLASS = "rdoc"
>Composition</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3A%3A%5C%2F%3A"
></A
><B
>(:\/:)</B
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
><TD CLASS = "rdoc"
>Either</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3A%3A%2F%5C%3A"
></A
><B
>(:/\:)</B
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
> <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
><TD CLASS = "rdoc"
>Split</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AFST"
></A
><B
>FST</B
></TD
><TD CLASS = "rdoc"
>Point-free first</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3ASND"
></A
><B
>SND</B
></TD
><TD CLASS = "rdoc"
>Point-free second</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AINL"
></A
><B
>INL</B
></TD
><TD CLASS = "rdoc"
>Point-free left injection</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AINR"
></A
><B
>INR</B
></TD
><TD CLASS = "rdoc"
>Point-free right injection</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AIN"
></A
><B
>IN</B
> HsExpP</TD
><TD CLASS = "rdoc"
>Injection on a specified type</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AOUT"
></A
><B
>OUT</B
> HsExpP</TD
><TD CLASS = "rdoc"
>Gets the functor</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3APARA"
></A
><B
>PARA</B
> HsExpP <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
><TD CLASS = "rdoc"
>Paramorphism</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AFIX"
></A
><B
>FIX</B
></TD
><TD CLASS = "rdoc"
>Fixed point function</TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3AMacro"
></A
><B
>Macro</B
> String</TD
><TD CLASS = "rdoc"
>Macros of frequently used pointfree terms</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "section4"
>Instances</TD
></TR
><TR
><TD CLASS = "body"
><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
><TR
><TD CLASS = "decl"
>Show <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "section1"
><A NAME = "2"
>Conversion of a <A HREF = "PFTerm.html"
>PFTerm</A
> to an haskell expression</A
></TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "decl"
><A NAME = "v%3Apf2Exp"
></A
><B
>pf2Exp</B
> :: <A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
> -> HsExpI PNT</TD
></TR
><TR
><TD CLASS = "doc"
>Applies a tranformation from a <TT
><A HREF = "Pointfree.html#t%3APFTerm"
>PFTerm</A
></TT
> to an expression of programatica's
abstract tree. Note that the type information inside the <EM
>IN</EM
>, <EM
>OUT</EM
> and <EM
>PARA</EM
>
terms is represented as a programatica's expression <TT
>L::type</TT
>, where the <TT
>type</TT
>
is the real type information.
</TD
></TR
><TR
><TD CLASS = "s15"
></TD
></TR
><TR
><TD CLASS = "botbar"
>Produced by <A HREF = "http://www.haskell.org/haddock/"
>Haddock</A
> version 0.6</TD
></TR
></TABLE
></BODY
></HTML
>