5

読み書きのできる haskell ファイルがあり、条件付きコンパイルを使用したいと考えています。私は文芸プログラミングの鳥のスタイルを使用します。次のコードは機能しません。

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

cabal 1.14.0 のソリューションが必要です

編集:

cpphsにはオプション --unlit があります。これはリテラシーなソースコードを非点灯にしますが、このオプションを cabal の cpphs に渡す方法がわかりません。

4

1 に答える 1

4

@kosmikus が指摘しているように、リテラル コードの非コード部分の処理を妨げない限り、C プリプロセッサ ディレクティブを任意の>orの外側に配置するだけで、期待どおりに動作します。\begin{code}

C プリプロセッサ ディレクティブをバード スタイルのリテラル プログラミングで使用することはできません。消灯ステップで がスペースに置き換えられるため、最初の列に>を入れる機会がありません。これを確認するには、GHC に#渡して、生成されたファイルをチェックアウトします。-keep-tmp-files.lpp

\begin{code}...ブロックに頼って\end{code}両方を取得できますが、それらを>- スタイルのコード行と混在させる場合は、余分なスペースを念頭に置いて、\begin{code}...で囲まれた行に追加して\end{code}ください。

> {-# LANGUAGE CPP #-}

A literal comment

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

> main = return ()
于 2013-05-14T13:58:27.290 に答える