> > ところで、Haskell では末尾再帰にすると効率が良くなるということは
> > 無いのでしょうか?
> > Lisp 系では顕著に違いますが、Haskell ではコンパイラーが面倒を見てく
> > れるのでしょうか?
> 
> Haskell では評価がlazyですので,Scheme の時のような末尾再帰最適化
> 効果は一般には期待できません.ただし,末尾再帰にしようとすることで
> アルゴリズムそのものが改良され劇的に速くなる場合があります.
> この場合はコンパイラではなく,プログラマの努力により速くなった
> ということですね (^o^)
> 
御教授ありがとうございます。
やはりそうでしたか。
末尾再帰にする手間が省けるというものですね。


> > 普段は Python, Lisp を使っています。
> 
> おっ.どんなプログラムを書いていらっしゃいますか.興味があります.
>  
物性関係の研究をしているので”その手”のプログラムを書くことがあります。
プログラミングが専門では無いのでお見せできるような例は持ち合わせていないのですが。。。

学生のころ Fortran を習ったのではじめは Fortran で書いていましたが、
Emacs Lisp, awk, C などの知識はありました。
Lisp 等の関数プログラミングに興味を持ったのは、
ある日、研究所で購入した、”その手”の計算をするための商用ソフトが
Lisp で書かれているらしいと分かったからです。
というのは、そのソフトにパラメータを与えるためには
パラメータを括弧でくくって、数値以外のトークンに片方だけクウォートを
つける必要があったからです。

ここまで露骨に Lisp のにおいを漂わせていれば素人でも
 Lisp で書かれていることに気づきます。
そこで、 Lisp について少しかじってみました。
その結果、Lisp で書くと Fortran や C で書くよりは
10 倍ほど早く書けることが分かりました。
実行は Fortran で書いたものより 10 倍ほど遅いのですが、
僕が書くプログラムはそんなに実行時間がかからないので(せいぜい1時間)
10 倍実行が遅くなっても、夜やらしておけば良いので、次の朝には結果が出ています。

つまり、Lisp を使うと
プログラムの作成を含めて1週間かかる計算が一日で出来るようになりました。

Haskell に興味を持ったのは、
1)ある種のアルゴリズムは数学の定義がそのままプログラムになる。
      Lisp のプログラムは同僚に評判が悪いのですが、
      Haskell で書けば(書くのはともかく)読むのは易しそうです。
2)型付けが Lisp より容易である。
      Lisp で実行速度を上げるために型付けをするのは面倒である。

という理由からです。
あと、遅延評価にも興味があります。


> 
> --
> ML: haskell-jp / quickml.com
> 使い方: http://QuickML.com/



--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/