07/12/29 12:45:46
[]が意味不明だった。
配列を[1, 2, 3]と書くと知って初めて空配列だと理解できた。
(x:xs)が意味不明だった。
他の部分で配列はすべて[]なのにここだけ()なのに違和感があった。
()はfact(n-1)のn-1と同じでx:xsが一つの要素だとくくっていると解釈した。
この辺はC言語だとコンマで区切るような所が空白で区切られているため
意識しないといけない部分だというように感じた。
そして++が配列の結合だと覚えた上で、
x:xs とはxが要素でxsが配列で [x] ++ xs という意味だと解釈した。
qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
の構文木が初見でイメージできなかった。
演算子++の優先度が高いため A ++ B ++ C と3つの配列が結合していると解釈した。
C言語風にqsort(elts_lt_x) ++ [x] ++ qsort(elts_greq_x)と書いてあれば
初見でも自力で解釈できたかもしれない。
>>10のいうように自分の知っているC言語に近いかどうかというバカの壁がある。
だからと言ってC言語を知らない人の方が先入観がなく理解しやすいとは思えないが。