Haskell事始め#1
Pascalのプログラミング文法を学ぶ機会があり、丁度良いのでこれを機に何か触れたことのない言語でPascalのコンパイラを作成しようと、 Haskellに手をだす事に相成りました。
ということで、HaskellでPascalのコンパイラを作成することを最終目標に、まずはHaskellチュートリアルを進めて行きたいと思います。
環境構築
環境:OS X 10.9.3
GHCコンパイラを使おうと思い、おもむろにbrew install ghc
すると、haskell-platform
をインストールしたほうがいいよ、というようなメッセージが出たので(確か)、続けて、
brew isntall haskell-platform
多分、後者だけで問題無い
$ ghci GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Prelude> putStrLn "Hello World!" Hello World! Prelude>
うん、動いてる。問題無い。
続けて、VimでHaskellを書く環境を整えます。
.vimrc
に、とりあえず以下の3つのプラグインを追加
" for Haskell {{{ "便利なghcmodなるコマンドをvimから便利に使うためのプラグイン NeoBundle 'eagletmt/ghcmod-vim' "補完用 NeoBundle 'eagletmt/neco-ghc' "インデントを賢くしてくれる NeoBundle 'kana/vim-filetype-haskell' "}}}
Haskellのパッケージシステムcabal
でghc-mod
はインストールできるらしいので、
$ cabal update $ cabal install ghc-mod $ echo 'export PATH=$PATH:~/.cabal/bin' >> ~/.bash_profile $ source ~/.bash_profile
こんなかんじで導入してパスを通す。
で、とりあえずは完了。
この作業中、neco-ghsのエラーが発生
module Main where import System.Enviroment
System.Enviroment
はミスタイプで、こんなモジュールは存在しないんだけど、
この状態で他の行で補完を発生させると、以下のようなエラーが出る。
Error occured in source's gather_candidates()! function neocomplete#handler#_do_auto_complete..neocomplete#complete#_get_results..neocomplete#complete#_set_results_words..199..necoghc#get _complete_words..necoghc#browse..<SNR>176_ghc_mod_caching_browse..<SNR>176_ghc_mod, 行 6 Vim(if):E684: リストのインデックスが範囲外です: 0 Source name is ghc
こういう時、プラグインのソース読めないのは本当に不便だなーと思いつつ、ソースを見てみるけどやっぱりわからない。
今回は、以下のようなHello,Worldなものを書いて終了。次回から本格始動予定。
module Main where import System.Environment main :: IO() main = do args <- getArgs putStrLn ("Hello , " ++ args !! 0)
$ ghc hello.hs $ ./hello.hs e-mon Hello,e-mon $