HaskellのGUIライブラリ
wxHaskellとかいろいろありますがgtkでなんとかする。
gtkもいろいろな種類があり、どれを使えばいいのかわからんし今もわかってませんが、とりあえずこの通りにやれば動く。
前準備
$ stack new <プロジェクト名>
で新規プロジェクトを立ち上げると勝手にいろんなファイルを作ってくれます。
package.yamlに以下のようにgi-gtk
を追加します。
dependencies: - base >= 4.7 && < 5 - haskell-gi-base - gi-gtk
gi-gtkはstack buid時にコンパイルされますが、依存関係の問題があるらしいので以下のコマンドを実行する。
$ brew install gobject-introspection gtk+ gtk+3
Hello World
gtkの"Hello World"がこちら。
{-# LANGUAGE OverloadedStrings, OverloadedLabels #-} module Main where import qualified GI.Gtk as Gtk import Data.GI.Base main :: IO () main = do Gtk.init Nothing win <- new Gtk.Window [ #title := "やあ" ] on win #destroy Gtk.mainQuit button <- new Gtk.Button [ #label := "押してくれ" ] on button #clicked (set button [ #sensitive := False, #label := "クリックしてくれてありがとう!" ] ) #add win button #showAll win Gtk.main
これをapp/Main.hsに書いて(src/Lib.hsは消してもOK)
$ stack build
して
$ stack exec <プロジェクト名>-exe
するとウィンドウが表示されるはず。