macOS へのインストールは、macOS 10.11で成功しました。おそらく、どのバージョンにもインストールできるだろうと思います。
macOS へのインストールは次の手順になります。
Gtk2Hsに比べると少し簡単です。
まず、Home brew をインストールします。Home brew は、wxWidgets をインストールするために使いますが、Apple Command Line Tools も自動でインストールしてくれます。Home brewは、インストールする時に、Command Line Toolsも自動的にインストールしてくれます。すでにCommand Line Toolsが存在していた場合はHome brewだけをインストールしてくれます。
Home brew のインストールは、ターミナルを起動して次のように入力します。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
なお、Home brewのインストールコードは変更になる場合があります。下記オフィシャルサイトに表示されているイントールコードをコピーして使うほうが良いでしょう。
Home brew のインストール後、問題がないか、次のように入力して確認します。
brew doctor
macOSのバージョンについての警告は無視してください。それ以外の警告には、表示される指示にしたがって、できるだけ対応してください。対応後は、ターミナルを一度閉じて、再び「brew doctor」を実行することを繰り返して、macOSのバージョンについての警告以外は消すようにします。
wxWidgetsをインストールするために、Home brewを使います。ターミナルに次のように入力してエンターキーを押してください。
brew install wxWidgets
もし、Javaのインストールを促されるダイログが表示されましたら、指示に従ってJavaをインストールしてください。
いろいろ試してみた結果、現在(2019年1月2日時点)のwxHaskellには、Haskell Platform 8.0.2a Full が良いみたいです。下記サイトより 8.0.2a Full をダウンロードしてインストールしてください。
Haskell Platform - Included Packages
Haskellが無事にインストールされたかどうか、Haskellのインタープリタを起動して確認してみます。ターミナルに次のように 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.
ターミナルに次のように入力してください。
cabal install wx cabal-macosx
インストール修了後、もし次のサンプルがコンパイルできないようでしたら、ターミナルを一度閉じてからもう一度開いてください。
上記で macOS へのインストールは完了しました。次のソースコードを記述して、お好きなところに UTF-8 で保存してください。ここでは、「frame.hs」という名前にしました。ファイルの拡張子は .hs になります。
import Graphics.UI.WX
main :: IO ()
main = start $ do
frame []
return ()
残念ながら、macOSではghciでwxHaskellを実行することはできません。このことは、wxHaskellのオフシャルサイトにも明記されています。
ターミナルに「ghc frame.hs」と入力してコンパイルします。
ghc frame.hs
[1 of 1] Compiling Main ( frame.hs, frame.o )
Linking frame ...
上記のように表示されればコンパイルは成功しています。
frame.hs:4:31: error:
lexical error in string/character literal (UTF-8 decoding error)
上記のように表示されればどこかが間違っています。修正して、再度コンパイルします。
無事にコンパイルできた場合は、ターミナルに次のように入力して実行します。
./frame
コンバイルされた「frame」ファイルをダブルクリックしても起動できますが、ターミナルも開いてしまいます。これを修正するには、まず新規フォルダを作成して、そのフォルダの中に「frame」ファイルを入れます。そしてフォルダの名前を「frame.app」に変更します。これでダブルクリックで起動できる。普通のアプリケーションになります。当然ターミナルも開きません。なお、アプリケーションファルダの「.app」は表示されません。
このようなフォルダをアプリケーションバンドルと呼びますが、自動的にアプリケーションバンドルを作ってくれるツールもあるみたいです。詳しくは、 WxHaskell - HaskellWikiをみてください。
wxHaskellのインストール時に「Java Runtime が必要です」というダイヤログが出る場合があります。Java をまだインストールしていない場合は、念のために下記サイトからJava をインストールしておきます。
Java SE - Downloads | Oracle Technology Network | Oracle
恐らく、Haskell Platform 8.4.3だけだと思いますが、「no-pie エラー」というのが出る場合があります。その場合は次のようにして一部ファイルを書き換えます。
ターミナルに次のように入力してください。
cd /Library/Frameworks/GHC.framework/Versions/Current/usr/lib
sudo su
...パスワード入力...
chmod o+w ghc-バージョン番号
cd ghc-バージョン番号
chmod o+w settings
exit
次にお使いのテキストエディタで「/Library/Frameworks/GHC.framework/Versions/Current/usr/lib/ghc-バージョン番号/settings」ファイルを開いて、次の行のYESをNOに書き換えて保存してください。
, ("C compiler supports -no-pie","YES")
を
, ("C compiler supports -no-pie","NO")
に書き換える。