【入門】Common Lisp その8【質問よろず】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2011/07/06(水) 17:15:15.55初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)
ま、ゆっくりたりましょう。
「いいものの本質は、いかなる時代においても変わらない」byパワーズ
(list
(url http://pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url http://pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2)
(url http://pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3)
(url http://pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4)
(url http://pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5)
(url http://pc12.2ch.net/test/read.cgi/tech/1234884136/l50 :part 6)
(url http://hibari.2ch.net/test/read.cgi/tech/1270370267/l50 :part 7)
□テンプレート置き場□
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
0941SCHEME餃子 ◆8X2XSCHEME
2012/02/28(火) 12:56:49.23Common Lisp は末尾再帰の最適化を保証していません。
積極的に再帰を使うような風土はありません。
Lisp の優位性が再帰と思っているならそれは勘違いです。
0942はちみつ餃子 ◆8X2XSCHEME
2012/02/28(火) 13:12:24.80実際問題、末尾再帰の最適化が出来ない処理系なんて稀だし、
それを言ったら C/C++ でも主要な処理系は末尾再帰最適化するので、
再帰の話で C/C++ と Lisp を比べるのは意味ないんじゃねーの?
既に >>940 が述べた通り、 Lisp では仮に再帰やループを使う場面でも
それを抽象化した関数なりマクロなりを使うことが多い。
そしてそういった「抽象化」が出来るところが何より Lisp の優位性だと思ってる。
もちろんどんな言語でも抽象化のための機構はもってるんだけど、
Lisp は粒度が細かいとでもいうか、小さい単位で抽象化するよね。
(それにはデメリットもあるのでそれが良いとか悪いとかじゃなくて、
Lisp の方が向いている場面もあるという意味で。)
それとインクリメンタルな開発プロセスも Lisp の特徴なので、
出来上がったコードで差が無いように見えても C/C++ でもよかったとは限らない。
0943デフォルトの名無しさん
2012/02/28(火) 13:42:23.270944デフォルトの名無しさん
2012/02/28(火) 13:43:07.23書いたコードはREPLでその場で実行修正、ソフトのためのライブラリを書くボトムアップ、副作用はなるべく一部に閉じ込める、高階関数で汎用部品を組み合わせる、マクロで関数で不可能な抽象化を行なう等。
CやC++と同じ感覚で書くと真価が掴めない。どの言語でもその言語に適したスタイルを身につけないとダメ。
0945デフォルトの名無しさん
2012/02/28(火) 13:49:48.100946デフォルトの名無しさん
2012/02/28(火) 18:26:49.380947デフォルトの名無しさん
2012/02/28(火) 18:36:20.87sxmlからGUI用のコードを生成するとか、他の言語だとIDEが吐くスケルトンも言語内で抽象化出来る。
0948デフォルトの名無しさん
2012/02/28(火) 18:47:42.71で済まされるかもしれないが一応言っておく。
0949デフォルトの名無しさん
2012/02/28(火) 19:11:52.69> マクロで書く関数では
えーと…何といいますか…
0950デフォルトの名無しさん
2012/02/28(火) 20:04:41.53関数で不可能な抽象化をマクロで行なう等。 ということだな。分かりやすくすれば。
0951デフォルトの名無しさん
2012/02/28(火) 20:47:48.400952デフォルトの名無しさん
2012/02/28(火) 21:02:02.87良く引き合いに出される例だけど
if test then
true-case
else
false-case
fi
これが, 関数 if だと
if(test true-case false-case)
と, なってしまう. このため,
1. 遅延評価を前提としてない言語だと test が返した結果にも関わらず,
true-case とfalse-case が実行されてしまう
2. true-case アンド/オア false-case に副作用があった場合, if 式の結果
が保証されない
マクロは ``クロ内で積極的に評価しない限り引数は評価されない'' ので上記
のよ うな問題は発生しない
てな所か?
0953デフォルトの名無しさん
2012/02/28(火) 22:56:46.88入門スレだけどCommon Lisp限定の話なら話の高度さに関係なくスレは進むよ
Macroについての入門だったり、高階関数の入門だったりと初めての事が出てくる話ならなんでも入門さね
0954デフォルトの名無しさん
2012/02/29(水) 01:26:32.99返すリストがコードとして実行時に再度評価される?
0955デフォルトの名無しさん
2012/02/29(水) 01:41:40.890956デフォルトの名無しさん
2012/03/01(木) 02:16:16.45schemeだかgaucheの中の人の記事にschemerは再起使うのが普通ってあったんだが
いや実際、使ってなかったから使わないのが普通なんだろうけど、
再起、末尾再帰なんて黒板問題でしか出てこないもんなのか?
>>944
TDDなんてREPLみたいなものじゃないの?
インクリメンタルな開発なんていうけれど、
要求分析が出来てない状況での開発にOOPが向いてないだけだよね?
ゲロゲロなオブジェクトの山になる前に、ただのcで書けってだけで。
0957デフォルトの名無しさん
2012/03/01(木) 02:44:26.98schemerとCLerは大幅にスタイルが違う。schemeなら再帰が普通。
TDDは方針、replはそれを支えうる機能。TDDにも使えるけど他の用途にも使える。
関数単体での実行が出来るし、変数も弄れる。作った関数をその場で確認しつつ修正していくスタイルは楽。コンパイルを通すためだけのコードも書かなくて良い。
高階関数やマクロはCより粒度の小さい部品が作れる。汎用的で小さな部品を組み合わせるのが関数型のスタイル。汎用だから仕様の変更にも強い。
どちらかというとLispSchemeスレ向きの話題になりつつあるな。
0958デフォルトの名無しさん
2012/03/01(木) 02:54:17.39部品の粒度が小さいし、実装と機能を分離させるし、動的型だし、マクロ等で無茶が出来るしで、特に決断を後にする、考えながら書くのに向く。
静的型以外の言語の機能なら簡単に後付け出来る。言語としての制約はないに等しい。どんな問題を解決すべきかも分からない研究等には最適。
0959デフォルトの名無しさん
2012/03/01(木) 03:02:22.060960デフォルトの名無しさん
2012/03/01(木) 03:39:40.73サンプルが偏ってるんじゃないかな。マクロとか普通に再帰を使いまくりだよ。
木構造であるプログラムのコードを扱うのがマクロなわけで、木構造と再帰の関係はご存知の通り。
また、再帰と同類の再帰的なマクロ定義も常套手段だし、やっぱり再帰とは切っても切れない関係。
マクロに限らずとも、例えば多値を使う場面では再帰を使うことが多い。
これは多値と標準のループ構文の相性が悪いから。
再帰を使う以上、メリットがあるなら最適化される末尾再帰にもするし、
再帰が不要ならdoやloopといったループ構文で済ませたりもする。要は使い分け。
それと、Common Lispはマルチパラダイムなので、書く人によって本当に全然スタイルが違う。
例えば、SchemeやHaskellも使う人なんかはモダンで関数的なコードを好んで書くけど、
歴史のある処理系のコードなんかは代入も使いまくりで実に手続き的だったりする。
この辺りは、色々な人の色々なコードを読んでみないと実感できないと思う。
0961デフォルトの名無しさん
2012/03/01(木) 04:03:57.92http://lib.store.yahoo.net/lib/paulgraham/utx.lisp
http://www.flownet.com/ron/lisp/rg-utils.lisp
0962デフォルトの名無しさん
2012/03/01(木) 13:07:10.67パッケージを切り替えるときに
common lisp内部ではどういう処理をしているのですか
0963はちみつ餃子 ◆8X2XSCHEME
2012/03/01(木) 13:18:12.78単純なループのかわりとか、なんでもかんでも再帰というわけではない、
という程度の意味であって全く使わないという意味じゃないよ。
Scheme の場合には破壊的な更新をすると第一級継続との組合せがやりにくいとかいうのも理由にあるかも。
0964デフォルトの名無しさん
2012/03/01(木) 16:10:19.00「環境」が変わります。
ネームルックアップテーブルを切り替えるわけです。
0965デフォルトの名無しさん
2012/03/02(金) 00:45:20.38けど、LISPに関する文章が悲しくて泣けた
0966デフォルトの名無しさん
2012/03/02(金) 00:51:53.530967デフォルトの名無しさん
2012/03/02(金) 01:32:56.020968デフォルトの名無しさん
2012/03/02(金) 01:34:37.390969デフォルトの名無しさん
2012/03/02(金) 18:36:47.70っていうようなもんじゃねーの?
0970デフォルトの名無しさん
2012/03/02(金) 19:01:10.300971デフォルトの名無しさん
2012/03/02(金) 20:19:45.49みたいな売り込み方はなあ・・・
0972デフォルトの名無しさん
2012/03/02(金) 20:55:02.240973デフォルトの名無しさん
2012/03/02(金) 23:27:36.370974デフォルトの名無しさん
2012/03/03(土) 15:18:08.540975デフォルトの名無しさん
2012/03/03(土) 16:01:37.61書いたコードの経歴も調べられない素人>972
0976デフォルトの名無しさん
2012/03/03(土) 18:02:01.29CLtL2の付録に載っていて、ファイルの入出力がとても手軽でいいなとは思うのですが
with-open-fileマクロを使うのがやはり主流なのかなと思いますが。
気になったので聞きました。
0977デフォルトの名無しさん
2012/03/03(土) 23:51:11.180978デフォルトの名無しさん
2012/03/04(日) 00:02:59.74それだったら980あたりで次スレお願いね
0979デフォルトの名無しさん
2012/03/04(日) 00:39:55.690980デフォルトの名無しさん
2012/03/04(日) 21:38:04.39他にレスが付かないから、そんな詳しくないけどレス。おそらくは主流じゃない。
Series使ってる人はふたり知ってるけど、自分が読む範囲のコードでは見掛けない。
ただ、表に出てこないだけで、ある所にはあるのかもしれない。自分も知りたい。
CLtL2でSteeleの書いてる通りなら、実績に裏打ちされたものではあるんだろうから、
これ使って良いのかな、って話なら、気にせず使っちゃえって思うな。
自分もSeriesのアプローチは好き。
0981デフォルトの名無しさん
2012/03/04(日) 21:56:07.87Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、
Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。
それ以外でもCommon Lispについての話題なら歓迎します。
ま、ゆっくりやりましょう。
「いいものの本質は、いかなる時代においても変わらない」byパワーズ
■前スレ
【入門】Common Lisp その8【質問よろず】
http://toro.2ch.net/test/read.cgi/tech/1309940115/
■Wiki
http://wiki.fdiary.net/lisp/ (id:guest pass:cl)
http://cl.cddddr.org/
http://tips.lisp-users.org/common-lisp/
0982デフォルトの名無しさん
2012/03/04(日) 22:43:00.130983デフォルトの名無しさん
2012/03/05(月) 00:18:38.80>>979
こういう信者がいるような人の言うことって当てにならないよね
0984デフォルトの名無しさん
2012/03/05(月) 00:20:43.910985デフォルトの名無しさん
2012/03/05(月) 00:24:34.11きめえwwwww
0986980
2012/03/05(月) 04:08:27.32【入門】Common Lisp その9【質問よろず】
http://toro.2ch.net/test/read.cgi/tech/1330888006/
0987デフォルトの名無しさん
2012/03/05(月) 11:05:50.80連投するから基地外が一人で必死だとバレバレですよwwwwwwwwww
0988デフォルトの名無しさん
2012/03/05(月) 14:29:53.690989デフォルトの名無しさん
2012/03/05(月) 17:52:52.040990デフォルトの名無しさん
2012/03/05(月) 23:47:50.04と思いきや、継続↓
レス数が950を超えています。1000を超えると書き込みができなくなります。