87
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Haskell IDE Leksah 入門

Haskell用のIDE(統合開発環境)Leksahの簡単な使い方を説明します。それほど機能が充実しているわけではありませんが、初めてHaskellを使うときの環境選択に迷った時は、とりあえずLeksahを触ってみてはいかがでしょうか。

Windows/Mac OS X/各種UNIX系に対応しています。

インストール

  1. Haskell Platform ※ 忘れないように注意!
  2. Leksah

最初にHaskell Platformをインストールします。これを飛ばしてうまく動かないケースがよくあるので、必ずインストールしてください。

※ WindowsではOSが64bitでも32bit版をインストールした方が安定しています。

Leksahのインストール方法はOSごとに説明します。

Windows

【注意】 この記事の情報は古いです。既にこのバージョンは動かない可能性があります。

新しいバージョンは安定しないようなので、古いバージョンを推奨します。

Mac OS X

【注意】 この記事の情報は古いです。既にこのバージョンは動かない可能性があります。

新しいバージョンは安定せず、古いバージョンにはキャレットが消える問題があるため、安定しているバージョンを紹介します。(情報源

dmgを開くとアプリが出て来ますが、それを直接起動するのではなく、アプリケーションフォルダなどにコピーしてください。

各種UNIX系

ディストリビューションにパッケージがあればそれをインストールしてください。なければソースからビルドしてください。

起動

起動すると確認画面が表示されます。そのまま[OK]をクリックします。

leksah1.png

環境の調査が始まるのでしばらく待ちます。

leksah2.png

本体が起動します。次回の起動からは確認や調査などはなく本体がすぐ起動します。

leksah3.png

初期設定

補完候補の自動表示は画面がずれるなど弊害の方が大きいため、オフにすることを推奨します。

メニューから設定します。

  • Configuration (Macの場合はメニュー左端のLeksah) → Edit Prefs
    • GUI Options → Complete only on Hotkey にチェックを付ける
    • [Save]

自動表示をオフにしても[Ctrl]+[Space]で出せます。

動作確認

初期状態でサンプルプログラムが開かれているので、ビルドして実行します。

configure

初めてビルドするときや設定を変更したときはconfigureが必要です。

次のアイコンをクリックしてください。

leksah4.png

※ ここで番号だけが出て他に何もログが出ない場合、Haskell Platformがインストールされているか確認してください。

右下のログを見て完了を確認します。

Resolving dependencies...
Configuring leksah-welcome-0.12.0.3...
-----------------------------------------

※ 赤字で警告が出ても無視して続行してください。

Warning: The package list for 'hackage.haskell.org' is 30 days old.
Run 'cabal update' to get the latest list of available packages.

ビルド

次のアイコンをクリックしてください。

leksah5.png

右下のログを見て完了を確認します。

Building leksah-welcome-0.12.0.3...
Preprocessing test suite 'test-leksah-welcome' for leksah-welcome-0.12.0.3...
[1 of 1] Compiling Main             (略)
Loading package ghc-prim ... linking ... done.
(略)
Linking dist\build\test-leksah-welcome\test-leksah-welcome.exe ...
Preprocessing executable 'leksah-welcome' for leksah-welcome-0.12.0.3...
[1 of 1] Compiling Main             (略)
Loading package ghc-prim ... linking ... done.
(略)
Linking dist\build\leksah-welcome\leksah-welcome.exe ...
-----------------------------------------
Installing executable(s) in (略)
-----------------------------------------

エラー

以下のようなエラーが発生することがあります。

<command line>: cannot satisfy -package-id ...

Leksahの外でコマンドを実行してください。Leksahは終了しなくても構いません。

$ ghc-pkg recache

実行

次のアイコンをクリックしてください。

leksah6.png

右下のログを見て動作を確認します。

Hello World
-----------------------------------------

プログラム修正時に自動的に保存してビルドされます。そのためビルド操作は毎回やる必要はなく、以降は実行操作のみで開発を進めます。

シンプルなパッケージを作成

新しく開発を始める時はワークスペースとパッケージを作成します。学習用として余分な機能を使わないシンプルなパッケージの作成方法を説明します。

まず開いているソースのタブを閉じてください。

leksah7.png

ワークスペース作成

パッケージ(後述)を複数まとめておく単位です。

メニューから新規作成します。

  • Workspace → New
  1. 適当なフォルダに移動します。
  2. [Create Folder]でワークスペースを入れるフォルダを作成します。フォルダ名を適当に入力します。
  3. Name欄に適当な名前(2で作成したフォルダと同名を推奨)を入力して[Save]をクリックします。

※ フォルダ名を入力後に必ず[Enter]を押して確定してください。確定せずに先に進むとフォルダが作成されません。

パッケージ作成

1つのプログラムはパッケージという単位で管理されます。

メニューから新規作成します。

  • Package → New
  1. ワークスペースのフォルダの中に、パッケージのフォルダを作成します。フォルダを作成しないと動作がおかしくなるため、必ずフォルダを作成してください。
  2. [Open]をクリックします。

パッケージ設定

設定画面が開きます。ビルドが重くなるためテスト関係の設定を外します。

  • Dependencies → QuickCheck → Remove

leksah8.png

  • Tests → Remove

leksah9.png

  • Remove Build Info
  • Save

leksah10.png

ハローワールド

サンプルのMain.hsが開きます。初期学習用にはこの内容をベースにするよりスクラッチから書いた方が良いため、[Ctrl]+[A]で全選択して[Backspace]で消去します。

ハローワールドを入力します。

main = do
    print "Hello, World!"

入力中にバックグラウンドでビルドが始まります。ログが落ち着かない感じです。この機能をオフにすることもできますが、文法チェックも兼ねているため、しばらくそのまま使ってみることをお勧めします。

実行アイコンをクリックしてください。

leksah6.png

右下のログを見て動作を確認します。

"Hello, World!"

後はここに色々と書きながら学習を進めれば良いでしょう。

取っ掛かりとして次の記事をリンクしておきます。


Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
87
Help us understand the problem. What are the problem?