ループで実装する練習中ですが
どうやらclispのlinuxの実装は末尾再帰を最適化してくれているようです
同じ処理をループと再帰で実装したけど実行時間が同じだったという観測結果からによるものですが
言語仕様的には多分common lispでは別にする必要ないというか規定されていないだけなんだろうなと
多分schemeの仕様には末尾再帰を最適化するような記述があるんだろうな
コンピュータサイエンスの話題、Common Lisp、すこしHaskellにも触れます 求職中 スキルとしてはVisual StudioでC#が得意 Webアプリケーション、データベースの一般的な操作に精通しています 要件定義から設計、実装まで問題なくこなせます 一般的なプログラミング言語なら問題なく扱えます
2015年11月3日
苦手意識からか
関数型を意識しすぎていてループでのプログラミング方法が全くおろそかになっていていまさらながらdoを使うのに非常に苦労してしまっているところがとても歯がゆい
とにかく意味もなく関数型、common lispなのに関数型
どこでだれが言ってたか忘れたけどcommon lispは関数型じゃないって言ってたような
lispって関数型の印象が強いけど印象だけで別に関数型じゃないらしい
末尾再帰も最適化されるわけじゃないみたいだし
多分だけど憶測だけどschemeだったら末尾再帰は最適化されることになってるんじゃないかなと、多分ですが
と言うわけでしばらくループで書く練習に取り組もう
まずはdoが満足に使えるようになることを目指そう
とにかく意味もなく関数型、common lispなのに関数型
どこでだれが言ってたか忘れたけどcommon lispは関数型じゃないって言ってたような
lispって関数型の印象が強いけど印象だけで別に関数型じゃないらしい
末尾再帰も最適化されるわけじゃないみたいだし
多分だけど憶測だけどschemeだったら末尾再帰は最適化されることになってるんじゃないかなと、多分ですが
と言うわけでしばらくループで書く練習に取り組もう
まずはdoが満足に使えるようになることを目指そう
乱数生成のシード
(setq *random-state* (make-random-state t))
指定しない場合、randomは一定の値を返す
を設定すると、起動するごとにrandom関数のシードを設定できる
多分いわゆる現在時刻とかをシードに設定しているのだと思う指定しない場合、randomは一定の値を返す
登録:
投稿 (Atom)