argius note

プログラミング関連

階乗の模範解答などなど


 (趣味的にっき 経由)
はい、私の例はまさに「低い」方の例でした。1行で書くのはトリッキーすぎるので、視覚的にも階乗と理解しやすい2行の例をまず覚えておきたいと思います。
これで今日は、パターンマッチングというものを覚えました。ちょっと進歩です。
ほとんど写しただけですが、以下のように書き換えました。

factorial (0) = 1
factorial (n) = n * factorial (n - 1)

main = print $ factorial (6)

入出力は省略し、"6"固定にしました。宣言のところなどは、カッコを省略できるのですが、あった方が関数っぽくなるような気がするのでつけています。あと名前が長いのはHaskellっぽくなさそう。固有のスタイルも徐々に定着させていこうと思います。
参照透過性は、以前に練習でLispインタプリタを実装した経験からか、なんとなく分かったような気がします。関数は一度評価されたら値に置き換わるので、何度呼ばれても一度しか評価されない、で合ってますか?