Epigram (programovací jazyk) - Epigram (programming language)
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
Paradigma | Funkční |
---|---|
Navrhl | Conor McBride James McKinna |
Vývojář | Neudržovaný |
Poprvé se objevil | 2004 |
Stabilní uvolnění | 1 / 11. října 2006 |
Psací disciplína | silný, statický, závislý |
OS | Cross-platform: Linux, Okna, Operační Systém Mac |
Licence | MIT[1] |
webová stránka | web |
Ovlivněno | |
ALF | |
Ovlivněno | |
Agda, Idrisi |
Epigram je Funkcionální programování jazyk s závislé typy a integrované vývojové prostředí (IDE) obvykle zabalen s jazykem. Epigram typový systém je dostatečně silný, aby vyjádřil specifikace programu. Cílem je podpořit plynulý přechod od běžného programování k integrovaným programům a důkazům, jejichž správnost může kontrolovat a ověřovat překladač. Epigram využívá Curry – Howardova korespondence, také nazývaný princip propozic jako typů, a je založen na intuicionistická teorie typů.
Prototyp Epigram byl implementován společností Conor McBride na základě společné práce s Jamesem McKinnou. Na jeho vývoj pokračuje skupina Epigram v Nottingham, Durham, St Andrews, a Royal Holloway, University of London v Spojené království (SPOJENÉ KRÁLOVSTVÍ). Současná experimentální implementace systému Epigram je volně dostupná společně s uživatelskou příručkou, výukovým programem a některým podkladovým materiálem. Systém byl použit pod Linux, Okna, a Operační Systém Mac.
To je v současné době neudržované a verze 2, která byla určena k implementaci Teorie pozorovacího typu, nebyla nikdy oficiálně vydána, ale existuje v GitHub. Design Epigram a Epigram 2 inspiroval vývoj Agda,[Citace je zapotřebí ] Idrisi,[Citace je zapotřebí ] a Coq.[Citace je zapotřebí ]
Syntax
Epigram používá dvourozměrný, přirozený odpočet syntaxe stylu s verzemi v Latex a ASCII. Zde je několik příkladů z Výukový program pro epigram:
Příklady
Přirozená čísla
Následující prohlášení definuje přirozená čísla:
(! (! (n: Nat! data! ---------! kde! ----------!;! -----------!! Nat : *)! nula: Nat)! suc n: Nat)
Toto prohlášení říká Nat
je typ s druh *
(tj. je to jednoduchý typ) a dva konstruktory: nula
a suc
. Konstruktor suc
trvá jeden Nat
argument a vrátí a Nat
. To je ekvivalentní s Haskell prohlášení "data Nat = nula | Suc Nat
".
V LaTeXu se kód zobrazuje jako:
Zápis vodorovné čáry lze číst jako „za předpokladu, že (co je nahoře) je pravda, můžeme odvodit, že (to, co je nahoře) je pravda.“ Například „za předpokladu n
je typu Nat
, pak suc n
je typu Nat
. "Pokud nic není nahoře, pak dolní prohlášení je vždy pravdivé:"nula
je typu Nat
(ve všech případech)."
Rekurze na přírodní scéně
... A v ASCII:
NatInd: all P: Nat -> * => P zero -> (all n: Nat => P n -> P (suc n)) -> all n: Nat => P nNatInd P mz ms zero => mzNatInd P mz ms (suc n) => ms n (NatInd P mz ms n)
Přidání
... A v ASCII:
plus x y <= rec x {plus x y <= případ x {plus nula y => y plus (suc x) y => suc (plus x y)}}
Závislé typy
Epigram je v zásadě a zadaný lambda kalkul s zobecněný algebraický datový typ rozšíření, kromě dvou rozšíření. Nejprve jsou typy prvotřídní entity typu ; typy jsou libovolné výrazy typu a ekvivalence typů je definována z hlediska běžných forem typů. Zadruhé, má závislý typ funkce; namísto , , kde je vázán dovnitř na hodnotu, kterou argument funkce (typu ) nakonec trvá.
Plně závislé typy, jak jsou implementovány v Epigramu, jsou mocnou abstrakcí. (Na rozdíl od v Závislé ML, hodnoty, na kterých závisí, mohou být jakéhokoli platného typu.) Ukázku nových typů schopností formálních specifikací závislých typů lze nalézt v Výukový program pro epigram.
Viz také
- ALF, asistent nápovědy mezi předchůdci Epigramu.
Další čtení
- McBride, Conor; McKinna, James (2004). "Pohled zleva". Journal of Functional Programming.
- McBride, Conor (2004). Prototyp Epigram, kývnutí a dva mrknutí (Zpráva).
- McBride, Conor (2004). Výukový program pro epigram (zpráva).
- Altenkirch, Thorsten; McBride, Conor; McKinna, James (2005). Proč záleží na závislých typech (zpráva).
- Chapman, James; Altenkirch, Thorsten; McBride, Conor (2006). Epigram Reloaded: Samostatný typechecker pro ETT (zpráva).
- Chapman, James; Dagand, Pierre-Évariste; McBride, Conor; Morris, Peter (2010). Jemné umění levitace (Zpráva).
externí odkazy
- Oficiální webové stránky
- Epigram 1 na GitHub
- Epigram2 na GitHub
- EPSRC na ALF, lego a souvisejících; archivovaná verze z roku 2006
Reference
- ^ „Epigram - oficiální web“. Citováno 28. listopadu 2015.