Search: in
CGOL
CGOL Encyclopedia
  Tutorials     Encyclopedia     Dictionary     Directory  
CGOL Email this to a friend      CGOL

CGOL

CGOL (pronounced "see goll") is an alternative syntax for the MACLISP programming language, featuring an extensible algebraic notation. It was created by Vaughan Pratt.

The notation of CGOL is a traditional algebraic notation (sometimes called "infix syntax"), in the style of ALGOL, rather than Lisp's traditional, uniformly-parenthesized syntax. The CGOL parser is based on Pratt's design for top-down operator precedence parsing, sometimes informally referred to as a "Pratt parser".

Semantically, CGOL is essentially just MACLISP, with some additional reader and printer support.

Syntax

Special notations are available for many commonly used MACLISP operations. For example, one can write a matrix multiply routine as:

for i in 1 to n do
  for k in 1 to n do
    (ac := 0;
     for j in 1 to n do
        ac := ac + a(i,j)*b(j,k);
     c(i,k) := ac)

CGOL has an infix . operation (referring to MACLISP's cons function) and the infix @ operation (referring to MACLISP's append function):

a.(b@c) = (a.b)@c

The preceding example corresponds to this text in native MACLISP:

(EQUAL (CONS A (APPEND B C)) (APPEND (CONS A B) C))

CGOL uses of to read and set properties:

'father' of x := 'brother' of relative of y

The preceding example corresponds to this text in native MACLISP:

(PUTPROP X (GET (GET Y RELATIVE) 'BROTHER) 'FATHER)

This illustrates how CGOL notates a function of two arguments:

\x,y; 1/sqrt(x**2 + y**2)

The preceding example corresponds to this text in native MACLISP:

(LAMBDA (X Y) (QUOTIENT 1 (SQRT (PLUS (EXPT X 2) (EXPT Y 2)))))

The syntax of CGOL is data-driven and so both modifiable and extensible.

References





Source: Wikipedia | The above article is available under the GNU FDL. | Edit this article


Search for CGOL in Tutorials
Search for CGOL in Encyclopedia
Search for CGOL in Dictionary
Search for CGOL in Open Directory
Search for CGOL in Store
Search for CGOL in PriceGig



Help build the largest human-edited directory on the web.
Submit a Site - Open Directory Project - Become an Editor

Advertisement

Advertisement



CGOL
CGOL top CGOL

Home - Add TutorGig to Your Site - Disclaimer

©2008-2009 TutorGig.com. All Rights Reserved. Privacy Statement