38634
このサイトの「sinwave.hs」をいうのを実行してみたくて、Haskellを導入してみた際の質問です。  
<http://maoe.hatenadiary.jp/entry/20100123/1264225964>

どうもreactiveというライブラリが必要みたいなので、

```

    $ cabal install reactive
    
```

とインストールしてみようとしたのですが、  
以下のようなエラーが出てしまいました。

```

    Warning: --root-cmd is no longer supported, see
    https://github.com/haskell/cabal/issues/3353 (if you didn't type --root-cmd,
    comment out root-cmd in your ~/.cabal/config file)
    Resolving dependencies...
    Configuring reactive-0.5.0.1...
    Building reactive-0.5.0.1...
    Failed to install reactive-0.5.0.1
    Build log ( /Users/kamesho/.cabal/logs/ghc-8.2.1/reactive-0.5.0.1-CYwyF7YDHygLOkFL84NpWM.log ):
    cabal: Entering directory '/var/folders/2f/936bl12n26n3jhgrqwdmbyvc0000gn/T/cabal-tmp-5107/reactive-0.5.0.1'
    Configuring reactive-0.5.0.1...
    Preprocessing library for reactive-0.5.0.1..
    Building library for reactive-0.5.0.1..
    
    src/Data/SFuture.hs:4:16: warning:
        -fglasgow-exts is deprecated: Use individual extensions instead
      |
    4 | {-# OPTIONS_GHC -fglasgow-exts #-}
      |                ^^^^^^^^^^^^^^^^
    
    src/Data/Reactive.hs:6:16: warning:
        -fglasgow-exts is deprecated: Use individual extensions instead
      |
    6 | {-# OPTIONS_GHC -fglasgow-exts #-}
      |                ^^^^^^^^^^^^^^^^
    [1 of 4] Compiling Data.Fun         ( src/Data/Fun.hs, dist/build/Data/Fun.o )
    [2 of 4] Compiling Data.Future      ( src/Data/Future.hs, dist/build/Data/Future.o )
    
    src/Data/Future.hs:58:1: warning: [-Wunused-imports]
        The import of ‘Control.Applicative’ is redundant
          except perhaps to import instances from ‘Control.Applicative’
        To import instances alone, use: import Control.Applicative()
       |
    58 | import Control.Applicative
       | ^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    src/Data/Future.hs:108:11: warning: [-Wunused-do-bind]
        A do-notation statement discarded a result of type
          ‘ghc-prim-0.5.1.0:GHC.Types.Any’
        Suppress this warning by saying
          ‘_ <- forever $ threadDelay maxBound’
        |
    108 |           forever $ threadDelay maxBound
        |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    src/Data/Future.hs:123:17: warning: [-Wunused-do-bind]
        A do-notation statement discarded a result of type ‘ThreadId’
        Suppress this warning by saying ‘_ <- forkIO $ mka >>= sink’
        |
    123 |                 forkIO $ mka >>= sink
        |                 ^^^^^^^^^^^^^^^^^^^^^
    [3 of 4] Compiling Data.Reactive    ( src/Data/Reactive.hs, dist/build/Data/Reactive.o )
    
    src/Data/Reactive.hs:223:10: error:
        • No instance for (Alternative Event)
            arising from the superclasses of an instance declaration
        • In the instance declaration for ‘MonadPlus Event’
        |
    223 | instance MonadPlus Event where { mzero = mempty; mplus = mappend }
        |          ^^^^^^^^^^^^^^^
    cabal: Leaving directory '/var/folders/2f/936bl12n26n3jhgrqwdmbyvc0000gn/T/cabal-tmp-5107/reactive-0.5.0.1'
    cabal: Error: some packages failed to install:
    reactive-0.5.0.1-CYwyF7YDHygLOkFL84NpWM failed during the building phase. The
    exception was:
    ExitFailure 1
    
```

コードの中にエラーがあるようですが、これではどうしようもなさそうだったので、今度は直接reactiveのコードをダウンロードしてインストールしようと試みました。

まず下のサイトにアクセスして、0.5.0.1のtar.gzをダウンロードします。  
<https://hackage.haskell.org/package/reactive>

そして、展開したディレクトリ内で以下のコマンドを入力します。

```

    $ runhaskell Setup.lhs configure
    
```

すると、以下のような出力になって、configureがうまくいきません。

```

    Configuring reactive-0.5.0.1...
    Setup.lhs: Encountered missing dependencies:
    TypeCompose >=0.6.7
    
```

TypeComposeというライブラリのバージョンが小さいのかと思ってTypeComposeのバージョンを確認してみましたが、以下のような感じで、バージョンにも問題ないように見えます。

```

    $ cabal list --installed
    (~省略~)
    * TypeCompose
        Synopsis: Type composition classes & instances
        Default available version: 0.9.12
        Installed versions: 0.9.12
        Homepage: https://github.com/conal/TypeCompose
        License:  BSD3
    
```

何分Haskellを触るのが初めてなもので、いまいちライブラリのインストール方法などが掴みきれてない状態です。

どうしたらreactiveをインストールする事が出来るでしょうか？

ちなみに今の環境は以下の通りです。  
パソコン:MacBook Air (13-inch, Early 2014)  
OS:macOS Sierra Ver. 10.12.6  
cabal:  
cabal-install version 2.0.0.0  
compiled using version 2.0.0.2 of the Cabal library

足りない情報があればぜひお伝えください。よろしくお願いします。
CC BY-SA 3.0
2017-10-12T06:03:04.450
38631
2017-10-12T14:13:48.677
2017-10-12T14:13:48.677
25734
25734
question
haskell reactive-programming macos
Haskellでreactiveをインストールできない
tar.gz ファイルから直接インストールした場合の方法については私も詳しくないのですが、  
ここ数年Haskellではパッケージをインストールする際、[stack](https://docs.haskellstack.org/en/stable/README/)
というツールを使用するのが一般的になっています。

いろいろ試してみましたが、reactiveは残念ながら2010年が最終更新日と大変古くなっている（その間、GHCの非互換な変更がたくさんありました！）ため、少なくとも問題の記事に載っているサンプルをビルドするのは、stackからインストールできる最もメジャーバージョンが古いGHC（7.8.4,
LTS Haskell 2.22）でも不可能でした。

問題の記事に使用したGHCやreactiveパッケージのバージョンが載っていないので、確実なバージョンはわかりませんが、どうしても試したい場合、
<https://www.haskell.org/platform/prior.html> から古いバージョンのHaskell
Platformをインストールするしかなさそうです。

なお、stackについては下記のページも参考にどうぞ。

  * <https://qiita.com/tanakh/items/6866d0f570d0547df026>
  * <https://qiita.com/igrep/items/da1d8df6d40eb001a561>
CC BY-SA 3.0
2017-10-12T07:27:44.553
38634
2017-10-12T08:58:05.827
2017-10-12T08:58:05.827
8007
8007
38631
answer
ビルド&実行できるようにしてみました。  
<https://github.com/waddlaw/reactive-example>
CC BY-SA 3.0
2017-10-12T10:38:55.183
38643
2017-10-12T10:38:55.183
593
38631
answer