Dla każdego pliku .hs można określić rozszerzenia języka polegać na tak:konwencję określania rozszerzeń w cabalized projektu
{-# LANGUAGE Foo, Bar, Baz #-}
cabalized projekt może również określić rozszerzenia języka na zasadzie per-projektu plik .cabal:
extensions: Foo, Bar, Baz
Który z nich uważany jest za "najlepszą praktykę"? Czy wszystkie używane rozszerzenia powinny być wymienione w pliku .cabal, jako forma dokumentowania kompilatorów, z którymi twój pakiet jest kompatybilny? A może wszystkie rozszerzenia powinny być zapisywane osobno dla każdego pliku, aby wyjaśnić, które pliki zależą od rozszerzeń? A co z obszernym dokumentowaniem w obu miejscach? A może najlepsza praktyka jest gdzieś pomiędzy?
Czy można wyciągnąć z tego wniosek, że sekcja "rozszerzenia" pliku .cabal zazwyczaj nie jest traktowana jako samodzielny manifest, z którego kompilatory mogą skompilować dany pakiet? –
@DanBurton: Tak, nie interpretowałbym tego w ten sposób; nie byłoby to użytecznym wskaźnikiem dla programu przetwarzającego plik Cabal, ponieważ nic nie powstrzyma cię przed używaniem 'LANGUAGE' pragmas, a dla dokumentacji bardziej użyteczna jest lista takich rzeczy w dokumentacji niż umieszczanie ich w pliku Cabal, który jest w istocie częścią kodu. – ehird