09/08/23 21:39:56
ある程度は関数型的なスタイルが推奨されてもいるみたいだけど、
一般に関数型言語と呼ばれる言語のスタイルと比較すると
破壊的更新を選択肢に含める度合は高い。
CommonLisp の持ち味は関数型ってことよりもマクロだと思うんだよね。
マクロが有用なのは DSL というか勝手なパラダイムを表現できることにあるのは同意してもらえると思う。
つまりマクロは「関数型」というパラダイムを積極的に破る機能とも言える。
言うなれば CommonLisp では関数型的スタイルがデフォルトではあっても、
いくらでも自由な表現が許されていて、しかも機能として一応可能であるというだけでなく
様々なパラダイムを許容する文化的土壌もある。
「思う」ばっかりなので実際にはそうでないところもあるかもしれないけどさ。
CL は非常にフリーダムなのに「関数型」という縛りにこだわってるのはナンセンスじゃないかな。
541:デフォルトの名無しさん
09/08/23 22:05:33
単なる道具だろ、言語なんて。
コンピュータなんて単なる箱だろ、どんなに突き詰めても有限な電気信号でしかないよ。
完璧な観念求めるなら数学やろうよ。
542:デフォルトの名無しさん
09/08/23 22:05:46
>>540
第一段落はSchemeにも当てはまっちゃうからその意見はどうなんだろうと思わざるを得ない。
学術にこだわったのがScheme,実学が良いのだと言うのがCLだって言う言い方の方がまだ納得できる様な気がする。
俺としちゃなんでどっちもいがみ合うんだろうと不思議でしょうがないんだけどね
(emacs vs viみたいであほらしい)
543:デフォルトの名無しさん
09/08/23 22:10:04
例えるならキリスト教とイスラム教でしょう。
どちらも元は同じ。
544:デフォルトの名無しさん
09/08/23 22:14:50
なんだかなー。
>>540を読んで、「本当にこの人マクロを理解できてるのかな?」と疑問に思った。
マクロは実行前にエクスパンドされるコードのエイリアス的な存在。
事実、clコードのコンパイル後にはマクロなどすっかり消えて無くなっている。
関数型のスタイルも破られない。
545:デフォルトの名無しさん
09/08/23 22:17:24
LOLにも書いてあったよな確か。CLは関数型言語ではない。って。
546:デフォルトの名無しさん
09/08/23 22:19:32
>>544
何か誤読してない?
>>540が言ってるのは、一番上のレイヤーの話だと思うんだけど。
副作用のある処理を関数的にラップしたりするのと同じで、あくまでも表現の話。
547:デフォルトの名無しさん
09/08/23 22:20:47
実際のところ、Lisp/Schemeプログラマはどの程度副作用の無いプログラミングを
心がけているの?
548:デフォルトの名無しさん
09/08/23 22:22:26
>>547
可能な限り避けて、使うところはできるだけまとめる。
変なバグに悩まされるの嫌だし。
549:デフォルトの名無しさん
09/08/23 22:22:41
>>547
永続化以外はほとんど使わないな。
550:デフォルトの名無しさん
09/08/23 22:24:39
そもそも、ある言語が「関数型」であるかどうかの判定は、
その言葉の定義によって変わるものなんだから、あまり議論する意味がないんだよね。
例えば、グローバル変数がある言語は関数型ではない、と言ってしまえば、ほとんど
どの言語も関数型ではなくなってしまう。 言語の基本的なプログラミングスタイルで
考慮するならば、cl も scheme も関数型と言えるだろうし。
551:547
09/08/23 22:27:05
>>548 >>549
まあそれが非純粋関数型言語における普通のプログラミングだよな。
552:デフォルトの名無しさん
09/08/23 22:33:24
>>537
血の巡りは悪いのに、血がたぎるのだけは早いんだねw
553:デフォルトの名無しさん
09/08/23 22:35:49
>>552 ad hominem で行くことしかできないのかもしれないけど、駄レスは付けないでね
554:デフォルトの名無しさん
09/08/23 22:36:18
>>552
血の巡りが悪いから一箇所に滞るわけで。それが頭だけどね。
555:デフォルトの名無しさん
09/08/23 22:39:14
人身攻撃(ラテン語: ad hominem)とは
556:デフォルトの名無しさん
09/08/23 22:41:43
俺はad hominem より ad aerarium の方が好きだなぁ
557:デフォルトの名無しさん
09/08/23 22:43:43
>>555
もう、子供なんだから。一人じゃ何もできないのね。
URLリンク(en.wikipedia.org)
An ad hominem argument, also known as argumentum ad hominem (Latin: "argument to
the man" or "argument against the man") consists of replying to an argument or
factual claim by attacking or appealing to a characteristic or belief of the
person making the argument or claim, rather than by addressing the substance of
the argument or producing evidence against the claim.
558:デフォルトの名無しさん
09/08/23 22:51:52
>>557
ミイラ取りがミイラになってるぞ
本当にこのスレの住人は罵り合いが好きだな
559:デフォルトの名無しさん
09/08/23 22:53:58
言葉遊びを言葉遊びと認知できない人は (ry
560:デフォルトの名無しさん
09/08/23 22:54:57
set!/setf < 私たちのための争うのはやめて!
561:デフォルトの名無しさん
09/08/23 22:56:07
言葉遊びしたいならVIP行けや
562:デフォルトの名無しさん
09/08/23 22:57:31
>>560
いやお前たちがいないと銀行すら作れないしさ
563:デフォルトの名無しさん
09/08/23 23:10:36
でマクロと関数型の相性はどうなのよ?
564:デフォルトの名無しさん
09/08/23 23:15:25
俺もそこに興味がある。誰か教えて
565:536
09/08/23 23:28:12
>>542
一応ことわっておくけど、>>535 も俺で、>>536 はその続きのつもり。
Scheme と CommonLisp の対比をしたいわけじゃなくて、 >>526 に対する反論。
OO ってことを言うのなら CLOS があるし、
Lisp を使わない理由にはならないという主張。
Scheme と CommonLisp で比較すれば関数型的スタイルは程度問題だとは思うよ。
ただその「程度」の差が 一般的な案件に使えるかどうかは影響する。
566:デフォルトの名無しさん
09/08/23 23:38:27
>>563
悪くないというか、むしろ良いと思う
どちらも原則として副作用を嫌うし、結果として単純な合成が効く
ってか小難しいこと考えなくても、
Lispの、おそらく成功と言っていい歴史が
相性の良さを保証していると思う
567:デフォルトの名無しさん
09/08/23 23:40:03
「practical common lisp」 のほうが「on lisp」より難しくない?
568:デフォルトの名無しさん
09/08/23 23:43:21
マクロと関数型の相性って言われても。直交する概念だと思うけど。
S式とマクロの相性とか、Lisp-1とマクロの相性とかならまだしも。
569:デフォルトの名無しさん
09/08/24 00:03:05
>>568
完全に直交する概念なら相性は良いと言えるんじゃないか?
570:デフォルトの名無しさん
09/08/24 00:23:52
>>567
OnLispは読み物としても良くできてるからじゃないの?
全然関係無いけど久しぶりに「対話によるCommonlisp」を読んだらギャグの寒さに泣いた(内容じゃなくてだじゃれ成分に)
571:デフォルトの名無しさん
09/08/24 00:36:27
>>567
お前、どっちも読んだことないだろ?
practical common lisp は初心者向けの本だぞ。
572:デフォルトの名無しさん
09/08/24 00:43:59
最近Lispに興味を持ち勉強中を始めました。
古本屋で「これがLispだ」という本を見つけ、通読したのですが、この先読むとしたら
何が良いでしょうか?今の所はOn Lispを読もうと考えています。
関数型プログラミングはMLで慣れているので、Lisp特有のテクニック等を学びたいと
思っています。良い本があれば教えてください。
573:デフォルトの名無しさん
09/08/24 00:46:06
>>572
> 関数型プログラミングはMLで慣れているので、Lisp特有のテクニック等を学びたいと
じゃマクロだわ。 On Lisp にしとけ。
574:デフォルトの名無しさん
09/08/24 00:47:15
>>572
今手に入る物ならどれ読んでも大丈夫だから全部読んじゃえばいいと思う(もちろん予算が厳しいならしょうがない)
でもLispの本ってあんまり数無いのよ
個人的に実践とOnLispは読むこと自体に喜びがあるよ
あとANSI CommonLispも良いと思う
575:デフォルトの名無しさん
09/08/24 00:57:41
>>573
>>574
ありがとうございます。まずOn Lispを読んでマクロの使い方を学びたいと思います。
今まで括弧の多さから敬遠していましたが、かなり面白い言語ですね。
576:デフォルトの名無しさん
09/08/24 01:01:35
>>570
ギャグの寒さは初めての人のためのLISPのが上だろう。
577:デフォルトの名無しさん
09/08/24 01:07:28
>>575
マクロを使い熟せるようになると面白みが倍以上になる。
俺みたいに子供の頃積み木遊びやLEGOにはまったような人ならなおさらね。
578:デフォルトの名無しさん
09/08/24 01:52:03
金ないなら図書館で読めよ
579:デフォルトの名無しさん
09/08/24 02:24:27
こんな場末のスレでシャドーボクシングするなよw
580:デフォルトの名無しさん
09/08/24 02:48:06
∧_∧
((.;.;)ω・)=つ≡つ ぼこぼこにしてやんよ
(っ ≡つ=つ
/ #) ババババ
( / ̄∪