糖衣構文
ここでは、ML系の言語のDerived Formsについて説明する。
t_1 ; t_2 は、手続き型言語においても見受けられるように、いわゆる命令文の列であるが、型付きラムダ計算において、 (λx:Unit : t_2) t_1 と表すことができる。(ここで、Unit はユニット型 である。)
糖衣構文はプログラムの意味としては同じものを、よりわかりやすい構文で書けるものである。ジャーゴンファイルの syntactic sugar の項では、アラン・パリスの「構文糖はセミコロンのガンをひきおこす」という言を引用している(ジャーゴンファイルのこの記述は、そのひとつ前の項目である「構文塩」(syntactic salt) の項にある「構文塩は不健康にプログラマの血圧を上げる」という記述と対応していて、colon cancer(結腸癌)とセミコロンを掛けてもいる。
逆に糖衣構文から元の構文に戻すことを desugar や脱糖という。糖衣構文の役割を考えると無駄な作業に思えるが、実際にどうなっているかを把握するためであるとか、場合によっては短く書けたり、また一般に柔軟性(自由度)は元の書き方のほうがすぐれる。脱糖したコードを把握しておくことが重要な一例として、Haskellのモナドが挙げられる。Haskellには、(モナドをなしている対象を)命令型言語のコードに似せたスタイルで書ける、do式(do expressions)という糖衣構文がある。しかし、自分でその対象自身を書く場合は、do式を脱糖したコードに現れる演算子(具体的には >>= という演算子)を、その対象について定義しなければならないからである。