Cayenne (programovací jazyk) - Cayenne (programming language)
Cayenne je závisle napsané Funkcionální programování jazyk vytvořil Lennart Augustsson v roce 1998,[1] což z něj činí jeden z prvních závislých programovacích jazyků (na rozdíl od důkazní asistenti nebo logické rámce ). Pozoruhodné rozhodnutí o návrhu je, že jazyk umožňuje použití neomezených rekurzivních funkcí na úrovni typu a vytváření kontrola typu nerozhodnutelný.[2] Nejčastěji psaní korektní asistenti a později závislé psané jazyky jako např Agda zahrnoval kontrolu ukončení, aby se zabránilo smyčce kontroly typu, zatímco současná Závislé ML omezila expresivitu jazyka na úrovni typu, aby byla zachována rozhodnutelnost.
V jazyce je jen velmi málo stavebních kamenů, ale hodně syntaktický cukr aby byla čitelnější. Základní typy jsou funkce, produkty a součty. Funkce a produkty používají závislé typy k získání další energie. Syntaxe je z velké části vypůjčena Haskell. Neexistuje žádný speciální systém modulů, protože u závislých typů jsou záznamy (produkty) dostatečně silné, aby definovaly moduly.
Implementace Cayenne byla napsána v Haskellu a také přeložena do Haskella, ale v současné době již není udržována.
Příklad
Hlavním cílem u Cayenne není používat typy k vyjádření specifikací (i když to lze provést), ale spíše použít typový systém dát typ více funkcí. Příkladem funkce, které lze v Cayenne zadat typ, je printf
.
PrintfType :: Tětiva -> #PrintfType (Nula) = TětivaPrintfType ('%':('d':cs)) = Int -> PrintfType csPrintfType ('%':('s':cs)) = Tětiva -> PrintfType csPrintfType ('%':( _ :cs)) = PrintfType csPrintfType ( _ :cs) = PrintfType cspomocný :: (fmt::Tětiva) -> Tětiva -> PrintfType fmtpomocný (Nula) ven = venpomocný ('%':('d':cs)) ven = (i::Int) -> pomocný cs (ven ++ ukázat i)pomocný ('%':('s':cs)) ven = (s::Tětiva) -> pomocný cs (ven ++ s)pomocný ('%':( C :cs)) ven = pomocný cs (ven ++ C : Nula)pomocný (C:cs) ven = pomocný cs (ven ++ C : Nula)printf :: (fmt::Tětiva) -> PrintfType fmtprintf fmt = pomocný fmt Nula
Reference
- ^ Augustsson, Lennart (1998). "Cayenne - jazyk se závislými typy ".
- ^ Altenkirch, Thorsten; McBride, Conore; McKinna, James (Duben 2005). „Proč záleží na závislých typech“ (PDF). Citovat deník vyžaduje
| deník =
(Pomoc)