1

Elasticsearch を使用したい小さな急ぎのプロジェクトを構築しています。ただし、haskellの elasticsearch に使用するライブラリのように見える Bloodhound は、template-haskell に間接的に依存しています。これは haste ではサポートされていません。さて、クライアントからエラスティックを呼び出す必要はないので、急いでブラッドハウンドを呼び出す必要はありませんが、サーバーに同じコードを使用するように構築されているため、同じコードベース内から呼び出すことができる必要がありますそしてクライアント側。どういうわけか、クライアント側とサーバー側の実装を別々にすることもできると思いますが、速攻の方法が本当に好きです。

サーバー側にのみ存在する依存関係を急いで呼び出すにはどうすればよいですか?

4

2 に答える 2

3

この目的のためにプリプロセッサを使用できます。Haste は__HASTE__マクロを定義するので、条件ステートメントでコードをラップするだけで十分です。

{-# LANGUAGE CPP #-}

main = do
#ifdef __HASTE__
    print "haste!"
#endif

#ifndef __HASTE__
    print "not haste!"
#endif

    print "everybody"

{-# LANGUAGE CPP #-}プラグマを使用して C プリプロセッサ拡張を有効にすることを忘れないでください。

「.cabal」ファイルでも同様の効果を得ることができます。

Build-Depends:
    bytestring >= 0.9.2.1
if flag(haste-inst)
    Build-Depends:
        base == 4.6.0.1,
        array == 0.4.0.1
else
    Build-Depends:
        base,
        array,
        random,
        websockets >= 0.8

(ソースhttps://github.com/valderman/haste-compiler/blob/0.4/libraries/haste-lib/haste-lib.cabal#L63 )

Haste の最新の開発バージョンでは、haste-instフラグの名前が に変更されていることに注意してください。haste-cabal

于 2015-05-12T21:04:24.983 に答える