| name | haskell-review |
| description | fp-in-scala 演習を Haskell へ移植したコードを規約に沿ってレビューする。移植や fp-in-haskell の編集をレビューするときに使う。 |
| user-invocable | true |
| disable-model-invocation | true |
| model | opus |
fp-in-scala → Haskell 移植レビュー
変更された Haskell コードを以下の観点でレビューし、違反を該当行とともに指摘する。
- Prelude と衝突する名前は
import Prelude hiding で同名定義し、コメントで補足する。
- 文字列整形は
show と ++ で行い、Text.Printf.printf を使わない。
- 標準出力は
print* 関数の putStrLn が担い、確認は ghci で行う。
- 出力メッセージは Scala 版と一致させる。
- 複数の
object は独立した題材ごとに個別モジュールへ分割する。
- Scala の
(A, B) => C はカリー化 a -> b -> c に対応づける。
- リストなど主たる操作対象は最後の引数に置く。
- 演習関数の本体は
undefined とし、Answers のみ実装する。
- コメントは日本語で書く。
- 実行時に標準出力へ出る文字列(テストの説明文など)は ASCII のみにする。非 ASCII(全角など)は非 UTF-8 locale で出力時に例外になる。
- 括弧が深くネストして読みにくい箇所に限り
$ を使ってよい。使う場合は、$ を使うと括弧の記法を避けられる旨をコメントで補足する。
- 型シグネチャの型変数名と完全一致する識別子を値の引数名に使わない(例: 型変数
a に対して値引数 a は不可、as や x は可)。
- コメント中の「配列」は「リスト」に直す。
- 配列の添字アクセスの説明は、リストのパターンマッチ走査に合わせて書き換える。
- コメント中の型変数は小文字で書く(Scala 由来の大文字を残さない)。
- Scala 標準ライブラリへの言及は Haskell の対応物に置き換えるか削除する。「メソッド」「オブジェクト」など OO 用語も使わない。
- コメント中の
_word_(Scala 由来の強調記法)は使わない。