Workshop/StartHaskell2/FAQ
#Haskell 学習者の FAQ
正規表現ライブラリ
Haskell の正規表現ライブラリはいろいろあるようですがお勧めはありますか?
- POSIX互換であればHaskell Platform添付のregex-posixを、Perl互換であればregex-pcreを。ただしHaskellにはパーサを書くモジュールが他に充実しているのであまり正規表現のお世話にはならないそうです。
関数の名前
hoge :: Hoge -> Foo
hoge x = ...
のように関数の名前を何回も書かなきゃいけないのは面倒だなぁと感じます。 なんとか1回で済む方法はありませんか?
- ghc-mod を使っていれば、型シグネチャを書いてから M-t とか。
- 上述のghc-modを使うなどして関数の実装から書いて後から宣言を自動的に追加する方法や、宣言を先に書いて実装を半自動的に生成する方法があるようです。
cabal install したパッケージ
以下のページに、「余談ですが、cabal installでインストールするとパッケージが壊れることがあるので、できるだけUbuntuの場合はdebパッケージがある場合それを使うと良いようです。」という、余談にしては随分深刻な記述がありますが、現在でもそうなのでしょうか?
Haskellのパッケージ管理システムCabalでinstallしたものをデリート(in Ubuntu)
- 現在はcabalの振る舞いが変わってその危険性は減ったそうです。ちなみにcabalとghc-pkgをラップしたcabというkazu-yamamotoさんのツールを使えばもっと楽にパッケージを使えるそうです!
ドキュメントをサクッと読むツール
標準ライブラリや、cabal installしたライブラリのドキュメントをコマンド一つで読むツール(Rubyのriみたいなもの)はありますか?
- ドキュメントがインストールされたパスを調べて適当なビューワーで読みましょう。もちろんパスは環境によって異なります。
foldrと無限リスト
手前味噌で恐縮ですが、foldrがケースによっては無限リストにも使える理由について次のページに解説を書いてみました。 これで正解なのかどうか教えていただけないでしょうか? また、何か補足があればお願いします。
なんでHaskellのfoldrは無限リストにも使えるのか、自分なりに考えて分かったこと
- 「実行順」を意識するより演算の「正格性」を意識するべきかも
- ここまで考えられるのであれば、小さなfoldrを使ったコードを手で最外簡約してみると良いと思います。
- foldrの実装 も見てみてください。