Home

Awesome

現在はex6というブランチで、課題6以降の執筆を続けています

興味がある方は是非ご覧ください。こちらがmasterにマージされるのは、課題22の文面まで一通り埋まってからです。あしからず。

Make Mistakes to Learn Haskell!

作りながら学ぶHaskell入門

💾インストール方法

まだStackHaskell Platformをインストールしていない場合は

Stackのインストールを推奨します。
下記のいずれかの方法でインストールしてください。

🍎🐧Mac OS XやLinuxなどのUnix系OSをお使いの方:

「ターミナル」を起動し、下記のいずれかのコマンドを実行してください。

curl -sSL https://get.haskellstack.org/ | sh

あるいは、

wget -qO- https://get.haskellstack.org/ | sh

🏁Windowsをお使いの方

64bit版のWindowsをお使いの方はこちらからインストーラーをダウンロードして、インストールしてください(よくわからなければ、とりあえず64bit版を試してみてください。32bit版のWindowsをお使いの方は残念ながらあきらめてLinuxを仮想マシンで動かしてインストールしてください)。

Chocolateyをお使いの方は、

choco install haskell-stack

でもインストールできます。

💾GHCと「Make Mistakes to Learn Haskell!」のインストール方法

現状はHackageにまだ公開していないので👇のコマンドを実行してください(どのOSでもこのコマンドです)。

git clone https://github.com/haskell-jp/makeMistakesToLearnHaskell
# あるいは git clone git://github.com/haskell-jp/makeMistakesToLearnHaskell

cd makeMistakesToLearnHaskell
stack install

GHCのインストールと、「Make Mistakes to Learn Haskell!」のビルドが始まります。

インストールが完了したら、「⚙️使い方」の節に書かれたコマンドを試してみてください。

なお、Linuxにおいて、libtinfoパッケージがないとインストールできない」というトラブルが報告されています。
例えばUbuntuの場合、下記のコマンドを実行してインストールしておく必要があるかも知れません。

sudo apt-get install libtinfo-dev

⚠️トラブルが発生したら:

インストール中などに何か困ったことが発生した場合、下記のいずれかのウェブサービスで質問してみてください。

🆙「Make Mistakes to Learn Haskell!」自体のアップデート方法

現状、当入門はまだまだ完成度が低いため、今後も度々更新することとなります。
アップデートが必要な場合は、👆の手順でgit cloneしたディレクトリーに移動した上で、

git pull
stack install

を実行してください。

⚙️使い方

  1. 課題の一覧を表示する(特に引数を与えなければ一覧が表示されます)

    mmlh
    
  2. 課題1の内容を表示する

    mmlh show 1
    
    • ブラウザーが起動してHTMLで課題の内容が表示されるはずですが、うまく行かない場合はターミナル上で表示させるため、次のように--terminalオプションを付けて実行してください。
    mmlh show --terminal 1
    
  3. 課題の回答をテストする
    (最後にmmlh showした課題のテストをする)

    mmlh verify your_answer.hs
    

🏁Windowsユーザー向けTips

MSYS2を利用している場合、stackがインストールするMSYS2と衝突して問題が起こることがあります。その場合、%APPDATA%\stack\config.yamlに以下の行を追加し、インストール済みのMSYSを使うように設定しましょう。

skip-msys: true

開発に協力していただける方へ

現状

問題を表示したり、ユーザーが与えた回答を判定するための基本的なフレームワークはできています。
私 igrepが社内の勉強会で使用するため、下記のことに取り組んでいます。

課題におけるプロンプト表記について

と書きましょう。

特に私 igrepが行いたいこと

特に私 igrep以外にやっていただきたいこと

課題の判定処理の実装方法

主に編集するファイルはsrc/Education/MakeMistakesToLearnHaskell/Exercise.hsです。
このファイルに各課題の判定方法や、ヒントの判定処理がすべてまとまっています。
文字列まわりで共通化できる処理を追加したくなったら、Exercise.hsに直接追加するか、src/Education/MakeMistakesToLearnHaskell/Evaluator/以下にファイルを追加するのが良いかと思います(おいおいRegex.hsというファイルを追加します)。

課題の判定処理のテストを書く場合は、test/Education/MakeMistakesToLearnHaskell/ディレクトリーに、ExerciseNSpec.hsNは整数)という名前のファイルを追加してください。
具体的なテストの書き方は既存のファイルを見ていただくとわかるかと思います。Hspecを使っています。

注意事項

ターゲット

依存ライブラリ