Leksah ハスケル用開発環境を使ってみる

  • こちらからダウンロードしてインストールする(マック用は安定している古めのものがよいらしいというウェブ記事もあったので一代前のを入れることにする)。結構重い
  • とにかくインストールして起動してみる

  • いきなり、サンプルパッケージのためのmain関数のあるファイルが立ち上がるので、それをビルドしてみたりしてもよいけれど、自分のパッケージとして作ってみるところから開始してみよう
  • 新しいパッケージの作成
    • ツールバーから、Packageを選び、Newとすれば、どこになんと言う名前で作るかを聞かれるので、適当に場所を決めて作る。Existing packageをコピーして作ることもできるので、デフォルトで入っているhelloをそのままに、作ってしまう
    • 次に、「ビルド」する。ビルドはツールバーのPackageからBuildを選べばよくて、そうすると

    • こんなディレクトリ構成で出来上がる。大部分は「コピー」したhelloパッケージのそれで、ビルドして作られたのは test2/dist/build/test2/test2である。これは、test2という名前のパッケージを作るにあたって、配布用(dist)としてbuildしたものがtest2というパッケージ名の下、test2という実行可能ファイルとしてできました、ということ
    • よくわかっていないけれど、コピーした諸ディレクトリ・諸ファイルにはcabalとかいう単語も見えるので、Hackage登録・cabal管理できるようになっている、ということのよう
    • ちなみに、同じくツールバーからPackage-> Runとやれば、GHCi実行みたいにもなってくれました
    • さらに、モジュールが閲覧できるペインとかもあって、定義ファイル・型参照とかもできて、結構、いいですね

  • interactive mod的に使うにはどうするのか…と思って少し調べましたがわからないので、もうパッケージとして使うことにする
  • どうするか、というと、helloパッケージをコピーして自分のパッケージにした後、そのhello.hsが次のようになっているわけだけれど
module Main (main) where

main = putStrLn "Hello, World!"
  • これを書き換えて、例えば、このサイトのそれを丸コピーして
main = print $ perfects 1000

sum_of_factors n = sum [x | x <- [1..n], n `mod` x == 0, x /= n]
perfects n = [x | x <- [1..n], sum_of_factors x == x]
  • とすればよく、後は、自分で書きましょう。これでleksahに置ける「ちょう初心者」の遊び場としては、補完やらスペルチェックやらもしてくれて、うれしい