GUIならばHaskellでも日本語の問題はない(かもしれない)

import Graphics.UI.Gtk

main = initGUI >>
windowNew >>= \window ->
vBoxNew True 0 >>= \vbox ->
entryNew >>= \entry ->
buttonNew >>= \button ->
labelNew Nothing >>= \label ->

set window [windowTitle := "初めてのWindowアプリ", windowDefaultWidth := 300, windowDefaultHeight := 200,
containerChild := vbox, containerBorderWidth := 10] >>

boxPackStart vbox entry PackGrow 0 >>
boxPackStart vbox label PackGrow 0 >>
boxPackStart vbox button PackGrow 0 >>

buttonSetLabel button "Button" >>
entrySetText entry "Hello World!!" >>

onClicked button (hello entry label) >>
onDestroy window mainQuit >>

widgetShowAll window >> mainGUI

hello e l = entryGetText e >>= return.reverse >>= labelSetText l

コンパイル&実行しても、ちゃんと日本語タイトルは表示されてるし、テキストボックス(Entry)に日本語も(一応)入力して、reverse使っても普通に表示されます。
(本来、日本語受け付けない所にIMEが頑張って入れるので、テキストボックスの外で日本語が表示されて、確定するとテキストボックスに入力される)


コマンドラインのメッセージは今も昔も英語が主流だし、コマンドラインで日本語表示で困るのはファイルの読み込みで文字化けがあるのが困るだけなので、Shift-JISのファイルが文字化けせずに表示できれば、問題ない気もする。
今時、GUIで日本語に問題さえなければ、十分なのでは?

そう、Win+Haskellが日本語に弱いというのはそれ程、問題じゃなかったんや!!

ちなみに、全く同じ動きをするアプリをC+Win32API、C#+WinFormsで作ったら

初回起動時

C+Win32API = 0.5秒
Haskell+Gtk2Hs = 3秒
C# + WinForms = 6秒

2回目以降

ほぼ同じくらい

大抵のユーザーは1日に何度も同じアプリを起動しないと思うので、初回の起動時間がC#より速いのは好印象。
(動作速度そのものは若干CやC#より遅い印象)

それにしても、do構文使わずに書いても、GUIはやはり手続き的になる…