wxHaskellは、人気のあるwxWidgets GUI フレームワークを、Haskellで使えるようにしたものです。
以前は、wxHaskellのインストールに失敗していたのですが、Haskell Platformのバージョンを下げることにより、インストールに成功しました。
このページでは、wxHaskell を Windows へインスールする方法を説明しています。
macOSへのインストールは macOS へのインストールをご覧ください。
Linuxへのインストールは Linux へのインストールをご覧ください。
Windowsへのインストールは、
の三段階になります。
しかしここでは、「wxWidgets」と「wxHaskell」を「wxInstallパッケージ」というものを使って、同時にインストールしますので、実際には二段階です。
次のリンクから HaskellPlatform8.0.2-a-full-...-setup.exeをダウンロードしてインストールしてください。「...」のところは、お使いのシステムに合わせて、「i386」か「x86_64」を選んでください。
なお、Haskell Platformの最新安定板は次のリンクからダウンロードできますが、現在(2019年1月3日)のバージョン 8.6.3 には、Gtk2HS のインスールが、まだ出来ません。
macOSの場合も、Haskell Platform 8.0.2までにしか、wxHaskellをインストールできませんでした。
以上の理由から、ここでは Haskell Platform 8.0.2をインストールします。
Haskell Platform 8.1 以上をインストールしていた場合に、もし、このチュートリアルを進めるのであれば、Haskell Platform 8.0.2をインストールしてください。Haskellは自動的に最後にインストールされたバージョンを使います。また、私に余裕があれば、他のバージョンを削除する方法も後述しようと思うっています。
インストールが終了したら、コマンドプロンプトを起動して ghci と入力してください。 もし、コマンドプロンプトが最初から開いていたら、コマンドプロンプトを再起動してから ghci と入力してください。
ghci
GHCi, version 8.0.2: https://www.haskell.org/ghc/ :? for help
Prelude>
上記のように表示されたら、Haskell Platformは無事にインストールされています。
ghci(Haskellのインタープリタ)を終了するには :q と入力します。ghciのコマンドは : (コロン)で始まります。
Prelude> :q
Leaving GHCI.
32bit Windowsの場合は、下記リンクから 「wxInstall-Achelanne-32-0.1.zip」をダウンロードしてください。
64bit Windowsの場合は、下記のリンクから 「wxInstall-Achelanne-64-0.1.zip」をダウンロードしてください。
wxHaskell - SourceForge.netで/ wxInstallをブラウズ
ダウンロードした ZIP ファイルを解凍してください。私の場合は、解凍したフォルダを「wxHaskell」という名前に変えて、 C: 直下置きました。
解凍したフォルダの中の「Install.bat」をダブルクリックします。
コマンドプロンプトが起動してインストールが始まるはずです。もし始まらなかったら、コマンドラインに次のように入力して、「cabal」をアップデートしてから、もう一度「Install.bat」をダブルクリックしてください。
cabal update
なお、このインストールには、時間がかかります。
インストールが終了しましたら、次のようにパスを追加するように指示されます。
Ready; now add
C:\wxHaskell\DLLs
and
C:\wxHaskell\wxWidgets\lib\gcc_dll
to your search path
続行するには何かキーを押してください . . .
指示どおり、何かのキーを押すとコマンドプロンプトが閉じます。
パスの追加方法は次の通りです。
パスの追加後、もしコマンドプロンプトが開いていたら、一度閉じて、もう一度開いてください。
上記で Windows へのインストールは完了しました。次のソースコードを記述して、お好きなところに UTF-8 で保存してください。ここでは、frame.hs という名前にました。ファイルの拡張子は .hs になります。
import Graphics.UI.WX
main :: IO ()
main = start $ do
frame []
return ()
コマンドプロントを起動して、frame.hs を保存したディレクトリに移動してださい。そして ghci frame.hsと入力してください。
ghci frame.hs
GHCi, version 8.0.2: https://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Main ( frame.hs, interpreted )
Ok, modules loaded: Main.
*Main>
上記のように「Ok, modules loaded: Main.」と表示されれば読み込みに成功しています。
もし「Failed, modules loaded: none.」と表示された場合は、コードに間違いがあるか、ファイルタイプがUTF-8になっていないかなどの問題があります。読み込みが成功した場合はコマンドプロントに「main」と入力して実行します。
main
Windowsでは、ghciで実行した場合、次のような警告ダイアログが2回表示されます。それぞれ「OK」を押して、無視してください。
libgcc_s_seh-1.dllがないため、プログラムを開始出来ません。
この問題を解決するには、プログラムを再インストールしてみてください。
その後、無事に、アプリケーションが起動します。
コマンドプロントに「ghc frame.hs」と入力してコンパイルします。
ghc frame.hs
[1 of 1] Compiling Main ( frame.hs, frame.o )
Linking frame.exe ...
上記のように表示されればコンパイルは成功しています。
(Windowsでの、wxWidgets、wxHaskellのコンパイルには多少時間がかかります)
frame.hs:4:31: error:
lexical error in string/character literal (UTF-8 decoding error)
上記のように表示されればどこかが間違っています。修正して、再度コンパイルします。
無事にコンパイルできた場合は、コマンドプロンプトで実行ファイル名を指定して起動します。.exe 拡張子はつける必要はありません (つけても問題ありません)。
frame
コンバイルされた「frame.exe」ファイルをダブルクリックしても起動できます。ただしコマンドプロンプトも開いてしまいます。今、コマンドプロンプトを開かずに起動する方法を探しています。