避けるべきこと
base
foldl foldl'よりfoldlを使うべき場面はほぼない。
sumとproduct foldMapで定義されており効率が悪く、リストの場合はあろうことかfoldlで定義されている。明示的にfoldl' (+) 0と書いたほうが良い
リストのhead, tail 部分関数であり、エラーにはスタックトレースが付いてこない。パターンマッチするか、空でないことが保証されたNonEmptyを使いたい
Text.Printf とにかく猛烈に遅い。ボトルネックになることは必至
read スタックトレースを出さない部分関数。Text.Read.readEitherを使おう
Data.Data (syb) GHC.Genericsが普及する前の技術であり、プリミティブ型とそれ以外を恣意的な区別する、パフォーマンスが悪いなどの難点がある
readFile ファイルの内容をStringとしてlazyに読み込む関数。リソース解放のタイミングが制御できない
Data.List.nub Eqのみによって重複を取り除くのでΟ(N^2)かかる。特殊な状況でない限り、nubOrdを使いたい text
Data.Text.IO 環境のロケール設定に依存して挙動を変えるおかしなモジュール。ByteStringとして読み込んで、decodeUtf8など適切な関数を使うべし
中途半端な抽象化