Гамлет основан на Шаблон Haskell ; в частности, квазиквотер (т. е. [hamlet| ... |]
) используется для встроенных шаблонов, а сращивание (т. е. $(hamletFile "foo")
) используется для создания шаблонов из файла. Затем к переменным обращаются с помощью функций самоанализа Template Haskell.
Это дает преимущества, помимо автоматического доступа к переменным:
Полученные шаблоны, вероятно, более эффективны, чем анализируемые и интерпретируемые во время выполнения, поскольку шаблоны Hamlet компилируются в обычный код на Haskell во время компиляции.
При чтении шаблона из файла файл анализируется во время компиляции и встраивается в полученный двоичный файл, поэтому шаблоны не нужно хранить в одном и том же месте во время выполнения, и срок действия шаблонов обеспечивается статически.
Я считаю, что эти преимущества применимы ко всем шаблонам Шекспира . Документация Haddock содержит больше информации о доступных квазиквотерах и сращиваниях.