CGOL - CGOL
![]() | Tento článek může vyžadovat vyčištění setkat se s Wikipedií standardy kvality. Specifický problém je: potřebuje IPA výslovnost "CGOL"Srpna 2019) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Paradigma | procesní, rozkazovací způsob, strukturovaný |
---|---|
Navrhl | Vaughan Pratt |
Poprvé se objevil | 1973 |
Ovlivněno | |
ALGOL, FORTRAN, MLisp |
CGOL[1][2] (výrazný "vidět goll") je alternativní syntaxe s rozšiřitelnou algebraickou notací pro Programovací jazyk Lisp. Byl navržen pro MACLISP podle Vaughan Pratt a následně přenesen do Společný Lisp.[3]
Zápis CGOL je tradiční infixová notace ve stylu ALGOL, spíše než Lispova tradiční, v závorkách prefixový zápis syntax. Analyzátor CGOL je založen na Prattově designu pro vzhůru nohama přednost operátora analýza,[4][5] někdy neformálně označované jako „Analyzátor Pratt ".
Sémanticky je CGOL v podstatě jen Common Lisp, s nějakou další podporou čtečky a tiskárny.
CGOL lze považovat za úspěšnější ztělesnění některých základních myšlenek, které stojí za dřívějšími LISP 2 projekt. Lisp 2 byl nástupcem LISP 1.5 cílem bylo poskytnout syntaxi ALGOL. LISP 2 byl opuštěn, zatímco dnes je možné použít CGOL codebase. Důvodem je, že na rozdíl od LISP 2 je CGOL implementován jako přenosné funkce a makra napsaná v Lispu, což nevyžaduje žádné úpravy implementace hostitele Lisp.
Syntax
Pro mnoho běžně používaných operací Common Lisp jsou k dispozici speciální notace. Například lze napsat rutinu násobení matice jako:
pro i v 1 až n do pro k v 1 až n do (ac: = 0; pro j v 1 až n do ac: = ac + a (i, j) * b (j, k); c (i, k): = ac)
CGOL má infix .
operace (s odkazem na Common Lisp nevýhody
funkce) a infix @
operace (s odkazem na Common Lisp připojit
funkce):
a. (b @ c) = (a.b) @ c
Předchozí příklad odpovídá tomuto textu v nativním Common Lisp:
(ROVNAT SE (NEVÝHODY A (PŘIPOJIT B C)) (PŘIPOJIT (NEVÝHODY A B) C))
CGOL používá z
číst a nastavovat vlastnosti:
'otec' x: = 'bratr' příbuzného z y
Předchozí příklad odpovídá tomuto textu v nativním Common Lisp:
(PUTPROP X (DOSTAT (DOSTAT Y RELATIVNÍ) 'BRATR) 'OTEC)
To ukazuje, jak CGOL notuje funkci dvou argumentů:
x, y; 1 / m2 (x ** 2 + y ** 2)
Předchozí příklad odpovídá tomuto textu v nativním Common Lisp:
(LAMBDA (X Y) (KVOCIENT 1 (SQRT (PLUS (EXPT X 2) (EXPT Y 2)))))
Syntaxe CGOL je řízena daty, a je tedy modifikovatelná i rozšiřitelná.
Stav a zdrojový kód
Je známo, že CGOL pracuje Armed Bear Common Lisp.[6]
Zdrojový kód CGOL a některé textové soubory obsahující diskuse o něm jsou k dispozici jako freeware z Carnegie-Mellon University Úložiště umělé inteligence.[3]
Reference
- ^ Pratt, Vaughan R. CGOL: Alternativní externí zastoupení pro uživatele LISP. AI Working Paper 121. MIT Artificial Intelligence Laboratory (Cambridge, MA). 1976.
- ^ Pratt, Vaughan R. CGOL - algebraická notace pro uživatele MACLISP. 27. ledna 1977.
- ^ A b CGOL: Algol-like language that compiles into Common Lisp
- ^ Pratt, Vaughan R. Přednost operátora shora dolů. Sborník konference ACM Symposium on Principles of Programming Languages. 1973. pp41–51.
- ^ Van De Vanter, Michael L. Důkaz formalizace a správnosti jazykového systému CGOL (Diplomová práce). Technická zpráva MIT Laboratory for Computer Science MIT-LCS-TR-147 (Cambridge, MA). 1975.
- ^ CGOL na ABCL Vývoj implementace Armed Bear Common Lisp blog.