haskell

Classy Preludeパッケージ

HaskellのスタンダードモジュールはPreludeと呼ばれ、明示的にインポートしなくても暗黙インポートされるため標準で使用できます。ここにはIntStringなどの基本的なデータ型や、四則演算やブール演算を始めとする基本的な関数等が定義されています。明示的にインポート文を書けば、この中の一部の関数だけをインポートする、あるいは一部を除外することができます。

しかしPrelude内には、特定のデータ型に対して定義されている関数が多くあり、別のデータ型に対して同名の関数を使いたい場合などは、別名のインポートをしたり、Preludeの関数をhidingする必要があります。このような面倒を避けるために、classy-preludeというパッケージが提供されています。以下のような目的で作られています。

A better Prelude. Haskell’s Prelude needs to maintain backwards compatibility and has many aspects that no longer represents best practice. The goals of classy-prelude are:

  • remove all partial functions
  • modernize data structures
    • generally use Text instead of String
    • encourage the use of appropriate data structures such as Vectors or HashMaps instead of always using lists and associated lists
  • reduce import lists and the need for qualified imports

 

このパッケージを使うことで、Preludeでは特定のデータ型にしか使えなかった関数が、ClassyPreludeでは型クラスのメソッドとして定義されていて、複数の型に対して使用できるようになり、別名インポートをしなくて良いケースが増えるようです。私は実はまだ使ったことがないのですが、githubに公開されていたあるサンプルプロジェクト内でインポートされているのを見て知りました。今度使ってみようと思います。皆さんもよければ調べてみてください。今度時間があったらサンプルを載せます。

参考

haskellプログラムのimportの別名が多くなる問題にはclassy-preludeを使いましょう
例とともに紹介している。デメリットも書いてある。

Prelude を カスタムPrelude で置き換える
似たような目的で作られている他のパッケージについても紹介されている。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です