Syntaktický cukr

Syntaktický cukr je v informatice označení pro takovou část syntaxe programovacího jazyka, jejíž jediným účelem je usnadnit programátorovi zápis nějakých základních obratů. Nejedná se tedy o klíčovou součást jazyka; nemá vliv na to, jaké programy v něm lze napsat nebo jak budou rychlé, nemá vliv ani na architektonický návrh programu. Obvykle se jedná o možnost zapsat určité drobnosti alternativním, pro člověka příjemnějším způsobem, než je způsob pro daný jazyk základní, odpovídající jeho vnitřnímu návrhu a dobře zpracovatelný překladačem nebo interpretem.

Příklady

Řetězce v Haskellu

Programovací jazyk Haskell přirozeně pracuje s textovými řetězci zkrátka jako se seznamy znaků, řetězec „ahoj“ je tedy možné napsat jako

['a', 'h', 'o', 'j']

a nic nebrání tomu, aby jazyk fungoval pouze s tímto zápisem řetězců. Jako syntaktický cukr ovšem programátorovi Haskell nabízí ještě alternativní možnost zadání řetězce uzavřením znaku do uvozovek, tedy

"ahoj"

Ve skutečnosti je i dříve uvedený zápis také syntaktickým cukrem, protože seznamy se ve své základní podobě v Haskellu zapisující pomocí rekurzivních dvojic a zcela cukru prostý zápis řetězce „ahoj“ má tedy podobu:

(:) 'a' ((:) 'h' ((:) 'o' ((:) 'j' [])))

Sice je možné zapisovat všechny řetězce v Haskellu v tomto formátu, bylo by to nicméně pro člověka obtížně zpracovatelné a tedy také náchylné k chybám. Proto se jedná o příklad toho, kdy se jiný než ocukrovaný zápis v podstatě nepoužívá.

Pole v jazyce C

V programovacím jazyce C je možné přistupovat k itému prvku pole a pomocí zápisu:

*(a+i)

Tedy pomocí syntaxe běžně užívané při práci s ukazateli. Kromě toho se ovšem uživateli nabízí jako syntaktický cukr také ekvivalentní a v praxi oblíbenější zápis

a[i]

Přístup k atributům struktury v jazyce C

K atributům struktury a, ke které máme ukazatel, bychom přistupovali tímto zápisem

(*a).atribut

protože nejdříve uděláme dereferenci ukazatele, který ukazuje na strukturu a, a poté pomocí tečky přístoupíme k atributu. Jazyk C však nabízí čistější zápis

a->atribut