{} в .cabal для Haddock-документации в Haskell - PullRequest
8 голосов
/ 30 августа 2010

Если я получу строку

> { -# OPTIONS_GHC -fglasgow-exts -XTemplateHaskell #- }

в части документации (описание) .cabal-файла, я получу сообщение об ошибке

haddock: parsing haddock prologue failed

при запуске

$ cabal haddock

но если я избавлюсь от { и }, все будет отлично.Есть ли какой-нибудь способ избежать {}, чтобы их можно было использовать в описании?

Ответы [ 2 ]

3 голосов
/ 21 марта 2012

Haddock имеет два синтаксиса для блоков кода - синтаксис, который разделяет блоки с помощью @, позволяет использовать экранирование HTML, которое можно использовать для встраивания символов, с которыми парсер Cabal не может иметь дело.

К сожалению, похоже, что Cabal удаляет лидирующие пробелы из @ блоков с неограниченным числом, поэтому вам также придется добавлять любые строки с пробелами к пробелу в кодировке HTML  .

Вот пример:

description:
  My package with a code example!
  .
  @
  {-\# LANGUAGE TemplateHaskell \#-}
  .
  main = do
      $templatePrint "hello!"
      $templatePrint "world!"
  @

Что делает для:

Мой пакет с примером кода!

{-# LANGUAGE TemplateHaskell #-}

main = do
    $templatePrint "hello!"
    $templatePrint "hello!"
2 голосов
/ 22 июня 2011

OPTIONS_GHC сам по себе не считается устаревшим (вы могли бы использовать это, например, для включения определенных параметров сборки), но использование его для включения / выключения языковых функций не считается хорошей практикой. Вместо этого используйте {-# LANGUAGE ... #-} прагмы.

например. {-# LANGUAGE TemplateHaskell, ForeignFunctionInterface, RankNTypes #-}

Кроме того, использование всеобъемлющего -fglasgow-exts считается плохим тоном. Лучше просто включить нужные вам расширения, и, таким образом, будет понятнее, что нужно любому, кто плохо знаком с вашим кодом.

...