2016-05-18 13 views
1

私はストリーム融合ライブラリを自分のプロジェクトに持ち込みようとしています。私はStack(LTS 5.16)を使用しています。 Stream-fusion-0.1.2.5のバージョンをプロジェクトのCabalファイルに追加しました。また、stack.yamlの余分な依存として追加しました。ストリーム融合を構築する際の問題を解決するには

stream-fusion-0.1.2.5: configure 
stream-fusion-0.1.2.5: build 

-- While building package stream-fusion-0.1.2.5 using: 
     /Users/me/.stack/setup-exe-cache/x86_64-osx/setup-Simple-Cabal-1.22.5.0-ghc-7.10.3 --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.5.0 build --ghc-options " -ddump-hi -ddump-to-file" 
    Process exited with code: ExitFailure 1 
    Logs have been written to: /Users/me/Haskell/hqfl/.stack-work/logs/stream-fusion-0.1.2.5.log 

    Configuring stream-fusion-0.1.2.5... 
    Building stream-fusion-0.1.2.5... 
    Preprocessing library stream-fusion-0.1.2.5... 
    [1 of 3] Compiling Data.Stream  (Data/Stream.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Data/Stream.o) 

    /private/var/folders/q_/qbq9bct96jj8p_c9kqbhmt840000gn/T/stack6002/stream-fusion-0.1.2.5/Data/Stream.hs:591:5: Warning: 
     Pattern match(es) are non-exhaustive 
     In an equation for ‘next’: 
      Patterns not matched: (_ :!: (Just (L _))) :!: S2 
    [2 of 3] Compiling Data.List.Stream (Data/List/Stream.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Data/List/Stream.o) 

    /private/var/folders/q_/qbq9bct96jj8p_c9kqbhmt840000gn/T/stack6002/stream-fusion-0.1.2.5/Data/List/Stream.hs:235:1: Warning: 
     The import of ‘seq, Int’ from module ‘Prelude’ is redundant 

    /private/var/folders/q_/qbq9bct96jj8p_c9kqbhmt840000gn/T/stack6002/stream-fusion-0.1.2.5/Data/List/Stream.hs:1703:10: Warning: Tab character 

    /private/var/folders/q_/qbq9bct96jj8p_c9kqbhmt840000gn/T/stack6002/stream-fusion-0.1.2.5/Data/List/Stream.hs:2496:1: Warning: 
     Rule "genericSplitAt -> fusible" may never fire 
      because ‘genericSplitAt’ might inline first 
     Probable fix: add an INLINE[n] or NOINLINE[n] pragma on ‘genericSplitAt’ 

    /private/var/folders/q_/qbq9bct96jj8p_c9kqbhmt840000gn/T/stack6002/stream-fusion-0.1.2.5/Data/List/Stream.hs:2504:1: Warning: 
     Rule "genericSplitAt -> splitAt/Int" may never fire 
      because ‘genericSplitAt’ might inline first 
     Probable fix: add an INLINE[n] or NOINLINE[n] pragma on ‘genericSplitAt’ 

    /private/var/folders/q_/qbq9bct96jj8p_c9kqbhmt840000gn/T/stack6002/stream-fusion-0.1.2.5/Data/List/Stream.hs:2516:1: Warning: 
     Rule "genericReplicate -> replicate/Int" may never fire 
      because ‘genericReplicate’ might inline first 
     Probable fix: add an INLINE[n] or NOINLINE[n] pragma on ‘genericReplicate’ 
    [3 of 3] Compiling Control.Monad.Stream (Control/Monad/Stream.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Control/Monad/Stream.o) 

    /private/var/folders/q_/qbq9bct96jj8p_c9kqbhmt840000gn/T/stack6002/stream-fusion-0.1.2.5/Control/Monad/Stream.hs:136:10: 
     Ambiguous occurrence ‘MonadPlus’ 
     It could refer to either ‘Control.Monad.Stream.MonadPlus’, 
           defined at Control/Monad/Stream.hs:124:1 
           or ‘GHC.Base.MonadPlus’, 
           imported from ‘GHC.Base’ at Control/Monad/Stream.hs:80:1-15 

    /private/var/folders/q_/qbq9bct96jj8p_c9kqbhmt840000gn/T/stack6002/stream-fusion-0.1.2.5/Control/Monad/Stream.hs:140:10: 
     Ambiguous occurrence ‘MonadPlus’ 
     It could refer to either ‘Control.Monad.Stream.MonadPlus’, 
           defined at Control/Monad/Stream.hs:124:1 
           or ‘GHC.Base.MonadPlus’, 
           imported from ‘GHC.Base’ at Control/Monad/Stream.hs:80:1-15 

は、どのように私はここであいまいさを解決することができます:私はプロジェクトをビルドしようとすると

はしかし、私は今、次のですか?

答えて

2

あなたはControl.Monad.Stream(ライン80)

- import GHC.Base 
+ import   GHC.Base hiding (MonadPlus 
+         , (=<<) 
+         , ap 
+         , join 
+         , liftM 
+         , liftM2 
+         , liftM3 
+         , liftM4 
+         , liftM5 
+         , mapM 
+         , mplus 
+         , mzero 
+         , sequence 
+         , when 
+        ) 

そして、それはコンパイルで以下の輸入を変更する必要がある - 私はそれが期待どおりに動作します天気を知りません、このライブラリは、のように3年(かなり古いです現在)、(キャバルファイルのセクション参照)には7.6.1と記載されています。 - ベンチマークを使用して、このライブラリから得られる利点が実際に得られることを確認することをお勧めします。私は、この図書館のアイデアの多くが今、それを基礎にしてきたと思います。

これらのベンチマークを実行した後にコメントを残すことができますか?本当に興味がありますか?

+0

私はそれについて不思議で、/ test/Benchディレクトリを/ Benchに移動し、それをキャバルベンチにしました。これらは結果ですhttp://lpaste.net/163848最初の図は2番目のData.List.StreamであるData.Listです。 GHCはこれを使用せず、ビルド/折りたたみ機構を改良したばかりだと思います。 – Michael

+0

私はあなたのエジェンドとキャバリア化されたベンチをここに[email protected]:michaelt1/stream-fusion.gitという価値があるものにしました。 – Michael

関連する問題