Некоторые реализации компилятора поддерживают указания компилятору --- псевдокомментарии, которые используются, чтобы передать дополнительные указания или подсказки компилятору, но не являются частью свойства языка Haskell и не меняют семантику программы. Эта глава резюмирует эту существующую практику. Не требуется, чтобы реализация соблюдала любой псевдокомментарий, но псевдокомментарий должен игнорироваться, если реализация не готова его обработать. С лексической точки зрения, псевдокомментарии выглядят как комментарии, за исключением того, что заключаются в {-# #-}.
decl | -> | {-# INLINE qvars #-} |
decl | -> | {-# NOINLINE qvars #-} |
Перевод: | ||
объявление | -> | {-# INLINE список-квалифицированных-переменных #-} |
объявление | -> | {-# NOINLINE список-квалифицированных-переменных #-} |
Псевдокомментарий INLINE указывает компилятору генерировать указанные переменные на месте их использования. Компиляторы будут чаще автоматически генерировать (встраивать) простые выражения. Это можно предотвратить с помощью псевдокомментария NOINLINE.
decl | -> | {-# SPECIALIZE spec1 , ... , speck #-} | (k>=1) |
spec | -> | vars :: type |
Перевод: | |||
объявление | -> | {-# SPECIALIZE спецификатор1 , ... , спецификаторk #-} | (k>=1) |
спецификатор | -> | список-переменных :: тип |