はじめに
最近Haskellの勉強を始めたのですが、早速つまずいたことがあったので書いておきます。
Contents
参考書籍
今回の記事を書くにあたって、Haskellの勉強に使用している書籍は、「ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門」です。
do式
do式は、複数の式をまとめる役割があるそうです。そして、do式によってまとめられた式は、上から順に実行されていくとのことです。
参考書籍ではじめにdo式が出てきた例がこちらです。
main = do cs <- getContents putStr cs
ファイル名を指定するとファイルの中身を標準出力に出力するというものですが、このはじめのdo式で早速つまずきました。。
つまずいた点と対処方法
参考書籍によると、do式のような複数の式をまとめる構文では、do式内の式のインデントを揃える必要があるとのことでした。(上記の例だと、doの後のcsとその下のputStrが揃っている)
しかし、上記のように書いてコンパイルしようとすると、
The last statement in a 'do' block must be an expression cs <- getContents putStr cs
と怒られてしまいました。。どうやらインデントが揃っていないことになっているようです。
そこで、対処方法として、以下のように変えます。
main = do cs <- getContents putStr cs
doの後に行を変えて、それ以降にインデントを揃えて式を記述するという形ですね。これでばっちり読み込んでくれました!
インデントを揃えるということを考えると簡単な対応だったのですが、どうしても真似から入っていくので、書籍通りの記述でうまくいかず悩んでしまいました。
コメントを残す
コメントを投稿するにはログインしてください。