[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#496873: ITP: pure -- functional programming language based on term rewriting



On Thu, Aug 28, 2008 at 2:54 AM, Neil Williams <codehelp@debian.org> wrote:
> On Thu, 2008-08-28 at 07:17 +0000, dhbaird wrote:
>> * Package name    : pure
>
> I can't help thinking that 'pure-lang' would be a much better package
> name rather than using such a common word that has multiple meanings.

Agreed.  This is my first time doing a package for Debian, and I'm
inexperienced with using Debian's systems.  Is there something I need
to do to fix this up in Debian's bug system?

>>   Version         : 0.5
>>   Upstream Author : Albert Gräf <Dr.Graef at t-online.de>
>> * URL             : http://pure-lang.sourceforge.net/
>> * License         : GPLv3
>>   Programming Lang: C, C++, LLVM
>>   Description     : functional programming language based on term rewriting
>
> Long description would appear to be missing.

Oops :-(  Sorry.  I've got this taken care of, to some extent in the
package that I've been working on.  I just didn't put it in the ITP
report.  Basically, here is a copy-and-paste from the Pure website:

"Pure is a functional programming language based on term rewriting.
Its core is actually purely algebraic and purely functional, but the
name can also be taken as a recursive acronym for the "Pure Universal
Rewriting Engine." Pure has a modern syntax featuring curried function
applications, lexical closures and equational definitions with pattern
matching, and thus is somewhat similar to languages of the Haskell and
ML variety. But Pure is also a very dynamic language, and is more like
Lisp in this respect. The interpreter has an LLVM backend to do JIT
compilation, hence programs run blazingly fast and interfacing to C
modules is easy.

As a language which uses general term rewriting as its underlying
computational model (instead of the lambda calculus, which most other
functional programming languages are based on), Pure also offers the
symbolic evaluation capabilities which you'd expect from such a
language. Pure is closely related to the author's Q language and is
slated to eventually become its successor, since it offers many new
and powerful features and programs run much faster than their Q
equivalents. (OTOH, Q still offers many more library modules right
now. Most of these will eventually be ported to Pure, but this will
take some time.)"

> The package name and the long description need to clearly explain what
> the package can do and why anyone should want to install it. It should
> also explain "term rewriting" which is not clear to me from what you
> have provided so far.

I think term rewriting would be kind of hard for me to explain, but
I'll give it a shot.  The programmer specifies rewrite rules, which
are compiled to do efficient pattern matching and substitution on
abstract syntax trees.  The rewrite rule looks like this:

    <pattern> -> <expression> if <condition>

The pattern matching can be fairly sophisticated, like other languages
such as Prolog and Erlang and other functional languages.  The
<expression> simply rearranges and evaluates
variables/constants/sub-trees which were matched by the pattern.
<condition> is a guard which checks for situations that cannot be
handled by pattern matching alone.

As Pure (and Q) demonstrate, you can actually make whole entire
programming languages based on this idea of term rewriting.

I think I am nearly ready to do a request-for-sponsor on the
debian-mentors list if there is nothing further to do on this ITP
report.

Thank you for your comments to help me out since I am very new to this.



Reply to: