Concurrent Clean : 変数名が短くなるわけ
どうも、Cleanでプログラムしていると、変数の名前が短くなる傾向がある。
これはどういうことかと考えていたのだけれど、これはこれでわかりやすさを考えているのかなと思うことがあったので、メモ。
-
-
- -
-
Cleanでは、関数の引数にパターンマッチが使えるのだけれど、例えば、次のようにリスト型を受け取ってパターンマッチで中身を取り出す場合、
addLineNumber [] = [] addLineNumber [(n,l):ll] = [n +++ l: addLineNumber ll]
と書く代わりに、
addLineNumber [] = [] addLineNumber [(lineNumber,lineStringData) :restOfLineNumberAndLineStringData] = [lineNumber +++ lineStringNumber :addLineNumber restOfLineNumberAndLineStringData]
のように書くと、変数名が長すぎてパターンマッチの構造がわかりにくくなって、例えば、addLineNumberのアリティがいくつなのかがわかりにくくなる気がする。
まあ、ちょっと例が極端だけど。
多少冗長でも、
addLineNumber [] = [] addLineNumber [(n,l):ll] /* n : current line number * l : current line string data * ll: rest of lines */ = [n +++ l: addLineNumber ll]
という風にコメントしておくのが、妥当な落としどころかな。