2013-05-14 37 views
5

Okur yazarlık haskell dosyam var ve koşullu derleme kullanmak istiyorum. Okuryazarlık programlamanın kuş stilini kullanıyorum. Aşağıdaki kod çalışmıyor.Literatür içinde Koşullu Derleme Haskell

> #if MIN_VERSION_base(4,6,0) 
> import Control.Exception 
> #endif 

ben cabal için bir çözüm gerekir 1.14.0

DÜZENLEME:

cpphs okur sourcecode unlits bir seçenek --unlit vardır, ama bu geçmesine nasıl bilmiyorum cabal olarak cpphs seçeneği.

cevap

4

@kosmikus'un işaret ettiği gibi, C önişlemci direktiflerini herhangi bir > veya \begin{code}'un dışına koyabilirsiniz ve onlar beklediğiniz gibi çalışacaklardır - eğer onlar sizin harf kodunuzun kod dışı parçalarının işlenmesini engellemezlerse.

Kuş öncesi okuryazarlık programlaması ile C önişlemci yönergelerini kullanamazsınız, açılış bölümü > yerini boşlukla değiştirdiğinden, # ilk sütuna geçme şansınız yoktur. Bunu, GH1'e -keep-tmp-files geçirerek ve oluşturulan .lpp dosyasını denetleyerek doğrulayabilirsiniz.

Her iki almak için \begin{code} ... \end{code} bloktan başvurmak, ancak kod > tarzı çizgilerle onları ikisini karıştırdığınız zaman akılda tutmak ekstra alan ve \begin{code} sarılı Hatlarınızı ekleyebilirsiniz ... \end{code}:

> {-# LANGUAGE CPP #-} 

A literal comment 

\begin{code} 
#if MIN_VERSION_base(4,6,0) 
    import Control.Exception 
#endif 
\end{code} 

> main = return() 
+0

Gerçekten kod bloklarına geçmek zorunda mısın? CPP direktiflerini doğrudan kaynak dosyaya koyamazsınız, herhangi bir önceki '' '? – kosmikus

+0

Ups, Bunu ilk denedim sanıyordum, ama durum böyle. –