5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

【入門】Common Lisp その11【質問よろず】

1 :デフォルトの名無しさん:2014/09/21(日) 22:49:21.73 ID:FJokPHUt
Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、
Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。
それ以外でもCommon Lispについての話題なら歓迎します。

ま、ゆっくりやりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

■前スレ
【入門】Common Lisp その10【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1361341876/

■Wiki
http://wiki.fdiary.net/lisp/ (id:guest pass:cl)
http://cl.cddddr.org/
http://tips.lisp-users.org/common-lisp/

3 :デフォルトの名無しさん:2014/09/24(水) 05:53:21.05 ID:jMNIys3U
僕のチンポの保守もして欲しいです

4 :デフォルトの名無しさん:2014/09/27(土) 22:11:12.38 ID:MwPKYdSn
CommonLispってもういらない子なの?

5 :デフォルトの名無しさん:2014/09/27(土) 22:16:56.38 ID:XRggRDkd
少なくとも俺はいる

6 :デフォルトの名無しさん:2014/09/28(日) 01:52:26.39 ID:ukluat85
もういらない子だと言われ続けて数十年

7 :デフォルトの名無しさん:2014/09/28(日) 10:02:46.51 ID:3fm9b2hk
CommonLispは無くなっても困らないけどs式使う言語が否定される訳じゃ無いからなー

GUIとかI/Oもちっと近代的に再定義できないもんかの>>CommonLisp

8 :デフォルトの名無しさん:2014/09/28(日) 11:36:29.40 ID:VPEqHLDK
なんでClojureはdoted pairなくしたんやろ
Symolic expressionはlinked cellが実体やないのか?
おかげでcar,cdrもないらしいやないか
それでもリスプの仲間かい!
レイプの間違いやないか?
エロいのうClojure

9 :デフォルトの名無しさん:2014/09/28(日) 11:50:37.01 ID:VPEqHLDK
consセルを次のように定義できるんやな
(define (cons car* cdr*)
(lambda (bool)
(if bool car* cdr*)))

で、かー、くだーや
(define (car cons-cell)
(cons-cell #t))

(define (cdr cons-cell)
(cons-cell #f))

わし、勉強したで
どや!

10 :デフォルトの名無しさん:2014/09/28(日) 12:03:58.38 ID:3fm9b2hk
>>8
Clojureはcons cellのあり方を変えてもLisp族であれると明確にしたんじゃないの?
実際Lispのdot pairってClojureでvector で2値持つのと何所が違うの?

11 :デフォルトの名無しさん:2014/09/28(日) 12:36:35.15 ID:iDFl5dY4
>>10
ワシにきくな!

12 :デフォルトの名無しさん:2014/09/28(日) 12:37:33.56 ID:3fm9b2hk
>>11
えー?
なんでわし怒鳴られてんのん?

13 :デフォルトの名無しさん:2014/09/28(日) 12:50:00.26 ID:iDFl5dY4
>>12
エヘヘ

14 :デフォルトの名無しさん:2014/09/29(月) 15:39:11.02 ID:EGBsxWNV
lispworks欲しい
実際emacs slime sbclとどれくらい違うんだろ

15 :デフォルトの名無しさん:2014/09/29(月) 15:46:20.10 ID:3Y1KoBbC
>>14
GUI使わないならLispWorksもEmacs+Slimeですよ。
ちなみにGUIつかうならフランツ買うべき

16 :デフォルトの名無しさん:2014/09/29(月) 16:43:54.70 ID:GUILLi5F
> GUI使わないならLispWorksもEmacs+Slimeですよ。
GUI使うよ

> ちなみにGUIつかうならフランツ買うべき
なんで?

17 :デフォルトの名無しさん:2014/09/29(月) 17:11:50.09 ID:3Y1KoBbC
>>16
とりあえずGUIで日本語使わないならLispWorksでも大丈夫だけど、GUI使うときに付属のエディタが多バイト文字対応してない>>LispWorks
Franzはそのあたり問題ないのとGUIのユーティリティーが凄い良くできてる。

でもお金無いのでFranzは評価版だけしか使ってないけどな!
エディタさえなんとかなるならLispWorks好きなんだけどな!

18 :デフォルトの名無しさん:2014/09/29(月) 17:22:08.25 ID:hqUDBNsI
lispworks6からUTF-8で表示で崩れもなく表示もできるし入力もできるよ.
common graphicsよりcapiの方が評判良いと思うけど.
lispworks7からjvmと連携するらしいよ.

19 :デフォルトの名無しさん:2014/09/29(月) 17:22:59.09 ID:GUILLi5F
やっぱり日本語がネックか
とりあえずfreeのacl使ってみる

20 :デフォルトの名無しさん:2014/09/29(月) 17:23:29.98 ID:GUILLi5F
lispworks買うことも視野に入れてみる

21 :デフォルトの名無しさん:2014/09/29(月) 18:42:06.20 ID:3Y1KoBbC
>>18
マジか!
マジならアップグレードするか

#という事を続けてAllegro購入とかわらんくらい突っ込んでるのがなっとくいかねー

22 :デフォルトの名無しさん:2014/09/29(月) 18:43:04.57 ID:3Y1KoBbC
>>18
jvm連携するくらいならClojreのIDEになってほしい orz

23 :デフォルトの名無しさん:2014/09/30(火) 19:30:43.62 ID:ReFtgmj2
Schemeに比べてCommon Lispの利点て何?

24 :デフォルトの名無しさん:2014/09/30(火) 20:23:52.47 ID:VWdpfwoz
ベタベタな手続き型プログラミングがいとも簡単にできるところじゃね?

25 :デフォルトの名無しさん:2014/09/30(火) 20:30:05.69 ID:lfWI1YhR
俺でも使えるコモンリスプってかあ

26 :デフォルトの名無しさん:2014/09/30(火) 20:50:58.25 ID:Q/T7bifx
偽と空リストが分かれてないとかnilのcar,cdrはnilとかそういうところは地味だけど
マクロ定義とかでリスト操作するときに便利

27 :デフォルトの名無しさん:2014/09/30(火) 20:53:38.82 ID:Q/T7bifx
あとバリバリに最適化してC並の性能に出来るところも気持ちいい

28 :デフォルトの名無しさん:2014/10/01(水) 01:31:35.21 ID:ewrKIyW0
なるほど
名前空間が分かれているところは利点?

29 :デフォルトの名無しさん:2014/10/01(水) 14:35:45.12 ID:aT3WVKIZ
Common LispがLisp-2であることは、俺にとっては実用上便利だが、
そうは思わない人たちもたくさんいるだろう。

30 :デフォルトの名無しさん:2014/10/01(水) 14:38:33.54 ID:pim40rLx
let over lambdaではちょくちょくageてた

31 :デフォルトの名無しさん:2014/10/02(木) 19:33:45.19 ID:Qypu3DYD
common lispって柔軟だけどかゆい所に手が届かない所が多いね
大抵はalexandriaとかkmrclとかcl-ppcreとかsplit-sequenceとか使えばなんとかなるけど
ライブラリが散らばるのが気になる
alexandriaとかkmrclをベースに自分だけが使う一つの巨大なライブラリを作って足りない部分を追加していく方がいいのかな

32 :デフォルトの名無しさん:2014/10/06(月) 01:52:15.38 ID:6XAAReg7
名前空間みたいに、分けられる概念は分けるのが正義。Scheme はたぶん間違っている。
その意味では CL も副作用を分けなかったのは失敗だった。

33 :デフォルトの名無しさん:2014/10/06(月) 02:40:17.27 ID:wbFS47kT
目が腐った

34 :デフォルトの名無しさん:2014/10/07(火) 00:42:24.02 ID:1sqcCb/K
プログラム書いるとオレオレマクロとかオレオレ関数ができてくると思うんだけど、みんなこれどこに置いてるの

35 :デフォルトの名無しさん:2014/10/07(火) 00:45:00.37 ID:nz5dcB15
sbclでコンパイルに数秒かかってて
(incf v)
(incf v)
...
をn回繰り返す式を
を(incf v n)にしたらコンパイルが一瞬で終わるようになった
最適化すごい

36 :デフォルトの名無しさん:2014/10/07(火) 00:46:27.10 ID:nz5dcB15
最初は今書いてるプログラムソースと同じディレクトリに置いて間を見計らって
~/.sbcl/の中に置いて起動時にloadするようにしてる

37 :デフォルトの名無しさん:2014/10/07(火) 02:44:00.62 ID:OarL+A4W
>>34
1. オレオレだと思っていてもalexandriaの中を探すと大抵のものはある.それを使う.
2. なければ,オレオレライブラリでもasdfで読めるようにしておく.quickproject使えば手間もかからん.
初期化ファイルで読み込ませるのはbad practice.

38 :デフォルトの名無しさん:2014/10/07(火) 15:39:11.06 ID:QLizEra8
ローカルプロジェクトはasdの設定とか面倒そうでやってなかったけど
quickproject使えば自動で生成されるんだな
前より楽になったしもっと早めに調べておけばよかった

39 :デフォルトの名無しさん:2014/10/07(火) 19:50:29.81 ID:1sqcCb/K
>>37
やっぱそんな感じなんですかね
一つのore-xandriaにいろいろ詰め込んでquicklispのlocal-projectに置いてるだけだったので、整理しようかなと思ってたんですが
参考になりました

40 :デフォルトの名無しさん:2014/10/07(火) 20:34:41.77 ID:/bWACu+C
(defun fn1 (str)
(print str))

どなたか教えて下さい。
上の様な関数fn1を最適化、型宣言をして下の様な、

(defun fn2 (str)
(declare (optimize (speed 3)(debug 0)(safety 0)))
(declare (string str))
(the string (print str)))

関数fn2になりました。
マクロを使って下のfn3の様にしたいのですが
可能でしょうか。教えて下さい。

(defun fn3 (str)
(high-speed)
(var-string str)
(the-print str))

41 :デフォルトの名無しさん:2014/10/07(火) 21:26:20.95 ID:WZBCV0KR
declareをhigh-speedやvar-stringマクロで表すのは無理
コードウォークするか別のアプローチを取るしかない

42 :デフォルトの名無しさん:2014/10/07(火) 21:27:43.76 ID:WZBCV0KR
書き込んだ後で思い出したけどリードマクロならdeclareに展開しても大丈夫だった

43 :デフォルトの名無しさん:2014/10/07(火) 23:54:28.45 ID:1sqcCb/K
(defmacro defun-opt (name args &body body)
(let ((vars (mapcar #'cadr args)))
`(defun ,name ,vars
(declare (optimize (speed 3) (debug 0) (safety 0)))
(declare ,@args)
,@body)))

(defun-opt fn ((string str))
(the string (print str)))

こんなんじゃだめなの?かなりてきとーに書いたけど

44 :デフォルトの名無しさん:2014/10/08(水) 03:05:44.37 ID:TuLw9ECs
>>40
CommonLispだから最適化しなくちゃならないとかマクロ使わなくちゃならないというのはむしろ間違い。
書く手間を減らしたいということなら、変数に最適化設定を入れて#.するってことが多いかな。
quicklispで公開されてるライブラリ入手してdeclareでgrepして読んでみると良いよ。

(defvar *normal-optimize* (optimize (speed 1) (debug 3) (safety 3)))
(defvar *full-optimize* (optimize (speed 3) (debug 0) (safety 0)))

(defun fn2 (str)
(declare #.*full-optimize*)
(declare (string str))
(print str)
str)

45 :デフォルトの名無しさん:2014/10/08(水) 16:33:49.70 ID:sWEVGgQw
型宣言とか最適化宣言って最初からつけといた方がいい?
後からつけるのは面倒そうだけど最初からつけるのも面倒だし

46 :デフォルトの名無しさん:2014/10/08(水) 17:24:24.76 ID:fEubzyH3
>>45
コンパイラにチューニングの肝を教える為のシステムだろう?
とりあえず動くコード書いてって言うREPL大好きな人なら後からだし、設計から最適化を含む人なら最初から入れるだけじゃないの?
あんまり難しく考えるとはげちゃうぞ

47 :デフォルトの名無しさん:2014/10/08(水) 17:37:35.42 ID:WnZHVY78
最初から入れる方向で設計する方が
あとあと抜本的大改造しなくてすみそうな

48 :デフォルトの名無しさん:2014/10/08(水) 17:43:22.35 ID:sWEVGgQw
> あとあと抜本的大改造しなくてすみそうな
やっぱり最初から宣言書いといた方が楽かな
はげるのは困るし

49 :デフォルトの名無しさん:2014/10/08(水) 17:52:50.07 ID:WnZHVY78
っていうか
人に聞いて決めるようじゃだめじゃないか?
自分で判断、どう判断しようか、その方針で作っていくうちにその良し悪しを知るのも勉強

50 :デフォルトの名無しさん:2014/10/08(水) 17:53:20.23 ID:WnZHVY78
×どう判断しようか
○どう判断しようが

51 :40です。:2014/10/08(水) 21:03:00.62 ID:kqWBLcYL
40です。
みなさま、ありがとうございます。
特に41さま、42さま、43さま、44さま、
具体例を示していただいて、大変勉強になりました。
また45からの「最初か後か」の議論。
参考にいたします。
ちなみに私は、正解を探る技量が自身に無いと考えていて
ひと通り書いて速度が気になれば「後から」改変する
方法でやっています。
これだと、とりあえず必要な目先の事だけに集中できて
コードのスッキリ感が保てると思うので。

52 :デフォルトの名無しさん:2014/10/13(月) 19:13:35.11 ID:iLY7u2fN
cl-ppcreってparse-stringして正規表現をS式にしたあと
それを使って文字列比較のクロージャを作ってるように見えるんだけど
dfaのコードが見当たらない
文字列比較のクロージャを使うやり方では有限状態機械はいらないのかな

53 :デフォルトの名無しさん:2014/11/08(土) 12:44:37.99 ID:DaCYtKLp
clojureとcommon lispとschemeのどれを学んだら良いか悩んでいます。
common lispが気になっているのですが、
モダンLispといわれるclojureの方がJVM言語ということもあって現実的に利用が容易な気もしていますし、
schemeはシンプルということで学びやすいのかなとも思います。
主観でも良いのでおすすめや優位性を教えていただけないでしょうか。よろしくお願いします。

54 :デフォルトの名無しさん:2014/11/08(土) 12:54:08.79 ID:6u8ySBY5
>>53
ここはcommon lispのスレなのでおすすめは決まっているようなものですがclojureです。
ユーザーが親切。

55 :デフォルトの名無しさん:2014/11/08(土) 13:24:51.50 ID:vifAICnG
Schemeがシンプルっていうのは正しいけど誤解でもある。
コミュニティで合意できた部分だけが仕様としてまとまったので仕様だけを見るなら綺麗で単純だけど、
決着がついてない論争は膨大にあって、処理系ごとに方針の違いが大きかったりする。
きちんと理解しようとすると、思ったよりは容易でない。
でも、まあ、 Common Lisp よりは楽かな。

Clojure は JVM が先にあって Lisp 的な外観をくっつけたものなので、
言語としての構造は Lisp 的テイストよりも Java 的テイストに寄ってると思う。
いろいろと Lisp っぽくないので Lisp についての理解を深めたいなら
あまり向いてないかもしれない。
現実路線というのはその通りだと思う。

Common Lisp は良くも悪くも Lisp 代表って感じ。

56 :デフォルトの名無しさん:2014/11/08(土) 13:41:44.59 ID:SZeI55Wm
>>53
使って学ぶならClojureがおすすめ
入門書は孔雀が表紙の本がGaucheの人が訳してて読みやすいし分かりやすい

ここCLスレだけど

57 :デフォルトの名無しさん:2014/11/08(土) 14:08:51.53 ID:LD3zpp/h
>>53
お勧めは、common lisp
schemeはlisp矯正ギブスみたいなところがあって、他言語やってた人にはいい気がするけど、
何かアプリを作ろうとすると、ライブラリがなくて面倒だったり、処理系依存が増えたりする。

clojureはjavaのライブラリを呼び出せるので、手軽にアプリが作りやすい。まそのおかげで、GUIアプリを作るのがやり易い。
その一方で、JVMの縛りを受ける。
armのlinuxで使おうとしたら、armのJVMがあんまりよくないのか、やたらと重かった。

なんだかんだで、common lispはいいバランスだと思う。
あとlisp族初めてなら、emacsとか入力支援のある環境を使った方がいいよ。

58 :デフォルトの名無しさん:2014/11/08(土) 14:39:56.17 ID:1s+x8/Zl
>>53
お勧めはClojure、ちくせうCLスレなのに!!!!
Webアプリとかは特に

CommonLispでお気楽極楽する事もできるけど、準備が大変。(GUIやるにはFFIで根性入れるかお高い処理系買うとか)
Clojureはこの点をJVMに依存することで過去の資産を使えるのが利点。
Schemeは僕は好きじゃ無いので説明に困るからお勧めしない。

なお、WebアプリをCommonLispで作るとmade with alien technologyを実感できてコレがたまらん

59 :デフォルトの名無しさん:2014/11/08(土) 14:53:14.38 ID:bYONtWuG
abclとかいうjvm上で動くcommon lisp処理系もあるよ

60 :デフォルトの名無しさん:2014/11/08(土) 15:36:43.34 ID:ypSedYZ0
Clojure人気すぎワロタ

お前らが考えるCommon LISPの実用に足りないこと、
これさえあれば実用できるのになー(チラッチラッ
って思うことって何?

61 :デフォルトの名無しさん:2014/11/08(土) 15:54:44.54 ID:bYONtWuG
コルーチンを実現するためにcl-contでpythonのyieldと同じ機能付けたら
マクロ展開後の式が大きすぎるみたいなこと言われたとき

62 :デフォルトの名無しさん:2014/11/08(土) 18:26:11.80 ID:9GHPHPx+
>>53
大人気のclojureに水を指すようだが、あれは first-class continuationsをサポートしていない。初めてリスプ系の勉強するのにはやめておいたほうがいい。初めてのLisp系の勉強には俺はSchemeを勧める。
テキストはThe Little Schemerを勧める。理由は
1. collector( continuation )もやるし
2. Y-combinatorもつくるし
3. Scheme上でScheme Interpreterもつくるからだ。
ただ、あくまでS式(Symbolic expression)を扱うので、例えばリストが内部的にどういうデータ構造なのか?は別書でやることになる。
car-cdr部を持つ単位(cons Cell)を次のようにclosureとして表現して見せてるくらいだ。

(define cons
(lambda (u v)
(lambda (t)
(if t u v))))
(define car (lambda (cell) (cell #t)))
(define cdr (lambda (cell) (cell #f)))

;applications
(define a
(cons 1 2))

(car a) -〉 1
(cdr a ) -〉 2

実用アプリをは基礎を学んでからCLででもClojureででも書けばいいんでないかい。

63 :デフォルトの名無しさん:2014/11/08(土) 18:37:47.02 ID:Y28pqrHL
おれの個人的意見。

>>53
scheme は scheme を実装して勉強する言語、と言っていいと思う。実装に興味があるならお勧めできる。特に gauche あたりの実装は素晴らしく綺麗で、面白い。

Common Lisp は何かを作るためのパワフルな道具。使えるようになって損はない。力を付ければ、低レベル層から高レベル層まで扱えるのが強み。ただやや古臭いところも。

Clojure は Lisp の皮を被ったちょっと違う何か、かもしれない。モダーンですごく考えられているし、どんどん進歩していて楽しい。コミュニティも活発。

まあ一つをやったら他のことはできない、なんてことはない。どれも面白いから、どんどん手を出すといいと思う。

64 :デフォルトの名無しさん:2014/11/08(土) 19:01:00.31 ID:FSWBSvHq
>>53
>>62の補足
The Little Schemerでは徹底して再帰的定義でやる。なのでwhileとかでの非再帰的定期は出てこない。非再帰的的定義など(きっと)頭の良いチンパンジーでさえできるようなものはいちいち扱わない!
また、fibonacci数を求めるなどを再帰的に定義すると非再帰的定義に比べてとても処理速が遅くなることがあるが、末尾再帰の書き方も出てくるので
非再帰定義に同等の速度を再帰的定義では発揮するやり方も学べる。
具体的にはcollecterを使った再帰的定義で末尾再帰が実現される例が出てくる。
この辺りもこのテキストを勧める理由た。ただし!意外に難しいかもしれない。最近、書き込みがあったがこのテキストがわからん、あきらめたと。
どうにもチンプンカンプンなら関連しそうな概念や例についめネットなどで予備調査しながらやるといいと思う。教えてくれる人がいればそれが一番だけどね。
「何?、継続がわからん?
あのな、いいか、女とセックスしたい時にな、女を脱がしてからセックスするだろ?まず脱がしてからセックスすることを継続だ。
それにつきる。」

65 : ◆QZaw55cn4c :2014/11/08(土) 20:58:26.72 ID:3fSv7BFT
ごめん、セックスに興味ないから‥

66 :デフォルトの名無しさん:2014/11/08(土) 21:45:01.32 ID:pv+SsXYA
ファックよりハックがしたい

67 :デフォルトの名無しさん:2014/11/08(土) 21:45:50.89 ID:LHO3gvAT
>>53
Schemeはいい言語だけど、何かをやろうとするとちょっとめんどいことが多いかな
完全な主観で言えばCommon Lispが好きだけど、
何かやりたいことがあってそれを実現したいのならClojureが一番楽だとは思う

68 :デフォルトの名無しさん:2014/11/08(土) 22:04:36.91 ID:nB39qpJZ
Libraries,not framework の哲学とか http://eed3si9n.com/node/141 とかが性に合うならClojureでもいいかも

あとは括弧が(Scheme/CLに比べると)少なかったり

69 :デフォルトの名無しさん:2014/11/08(土) 22:16:41.69 ID:pv+SsXYA
lisp方言としてはarcが好きだけど処理系がなあ

70 :デフォルトの名無しさん:2014/11/09(日) 17:30:33.39 ID:9cWBVjQF
アクセス禁止にされてしまいレスが遅くなって申し訳ありません。

実はland of lispとプログラミングClojureはとりあえず読んだことはあります。(内容は正直曖昧に理解しているところもありますが。)
みなさんのお話を聞いたうえで、今特定の仕事に追われているわけでもないですし、common lispを勉強していこうと思います。
何かをするために言語を学びたいというのももちろんありますが, それ以上にlispという概念についての理解を深めたかったことと, いわゆる`lisper`への憧れから, もっとも満足できそうなのはcommon lispかなと判断しました。
皆さんご意見いただき有難うございました。

71 :デフォルトの名無しさん:2014/11/09(日) 21:16:34.40 ID:LY/WWL8I
最近思うんだけど、Lispの利点で重要だけどあまり宣伝されてないのはrepl。
書いたコードを即時に動かして結果やデータを見つつ、徐々に大きくしていくスタイルは脳汁どばどば出る。
LispマシンやCLIM系のインスペクタやデバッガも、このスタイルのためにあるように思える。

72 :デフォルトの名無しさん:2014/11/09(日) 21:40:49.56 ID:OnT24YzJ
リスプの概念をスマートに認識できるのはスキームだけどな
ま、いいけど
バイバイ

73 :デフォルトの名無しさん:2014/11/09(日) 21:41:43.14 ID:OnT24YzJ
>>71
インタープリター共通の事じゃいのか

74 :デフォルトの名無しさん:2014/11/09(日) 21:44:22.51 ID:4nIud3Qa
>>71
REPL が重要なのは同意。でも、REPL はもっと進化していいと思う。SLIME でもまだ不満だ。
例えばだけど、プロファイリング結果をグラフでREPLとは別のウィンドウに表示し続けるとか。アレグロにはあったけどCLOSのクラス階層を表示してくれるとか。

75 :デフォルトの名無しさん:2014/11/09(日) 22:24:39.17 ID:WJCAde3H
>>74
LightTableってエディタでclojureいぢると少し近い感じになるかも
CLだとやっぱりFranzとか欲しくなる

小売りで買えないから学習用の奴しか触ったこと無いけどたしかに脳汁が出そう

76 :デフォルトの名無しさん:2014/11/09(日) 22:46:55.86 ID:HXAk+KxZ
slime使ってないの?

77 :デフォルトの名無しさん:2014/11/09(日) 23:45:42.55 ID:/Un9rwFK
昔の Lisp の開発環境って使ったことは無いんだけど、スクリーンショットだとか動画とか見ると、
今でいう JavaScript を Chrome の開発環境で使ってるみたいな感じで、かなりリッチなんだな。
slime なんてめじゃないぞ。 どうして退化してしまったのか…。

78 :デフォルトの名無しさん:2014/11/10(月) 11:24:29.22 ID:7fhrA1DH
>>74
現状ライブラリとして広く共有されてるかは別としてそれなら簡単に作れると思うけどね
クラスブラウザなら素朴なのがslimeにもあるよ(require 'slime-xref-browser) M-x slime-browse-classes これもCLOS入門で試しに作ることが多い

replが重要なんじゃなくて対話性が重要ってことなんじゃないのかな
そして他の言語にかなりキャッチアップされてるから,いまとなっては大した特長でもない

79 :デフォルトの名無しさん:2014/11/10(月) 12:13:10.95 ID:1g8XtIDd
柔軟性や透明性など、自由度が段違いでは

80 :デフォルトの名無しさん:2014/11/10(月) 13:13:00.20 ID:ELyMc5jq
slime-browse-classes初めて知った
クラスの継承関係を表示するだけでも便利だけどスロットとか出ないの?

81 :デフォルトの名無しさん:2014/11/10(月) 13:30:21.54 ID:7fhrA1DH
>>80
シンボルの上でC-c C-d dすれば良いんじゃねw
いずれにせよ柔軟性や透明性など、自由度が段違いですのでカスタマイズするのも自作するのも簡単だろう

82 :デフォルトの名無しさん:2014/11/10(月) 13:34:45.80 ID:1g8XtIDd
M-x Slime-Inspect

83 :デフォルトの名無しさん:2014/11/10(月) 14:24:04.72 ID:ELyMc5jq
>>81
その方法なんで気付かなかったんだろ
ありがとう

84 :デフォルトの名無しさん:2014/11/10(月) 15:06:49.35 ID:ELyMc5jq
slimeでさえ使い込なせてないのにそれより多機能な>>71があっても豚に真珠だな
早く豚から海豚くらいになりたい

85 :デフォルトの名無しさん:2014/11/10(月) 21:56:18.97 ID:9fx5sy2R
うぉー、LightTable かっけー!サンクス!
いろいろいじってみる。

>>78
すまん、おれの説明が悪かった。
クラスブラウザは単なる例で、もっとLispの特徴を活かした開発支援のアイディアはあると思っているんだよ。
それがあることで生産性がぐっと上がるような。
具体例が出せないが、多分一つの方向は、コードから得られる統計的データを生かすものだと思う。

86 :デフォルトの名無しさん:2014/11/10(月) 22:52:31.46 ID:MlKubg7v
みんな そんなにreplとクラスブラウザが好きなら
Smalltalkにしちゃいなよ

87 :デフォルトの名無しさん:2014/11/11(火) 12:06:59.77 ID:VkGqc8ov
Smalltalkと同程度に、インタラクティブに、イテレーティブに、アジャイルに、GUIを含めて開発できるということだな

88 :デフォルトの名無しさん:2014/11/11(火) 22:45:43.16 ID:2Fik2SFv
Smalltalk はもう何年も前に死んでるじゃないか

89 :デフォルトの名無しさん:2014/11/12(水) 00:49:21.53 ID:6Jeysito
clojureから流れてきたものだけど、CLer的にはloopってどういうものだと認識されてる?

同じlispではあるけど、CommonLispは関数型であろうとしてるように感じないんだよね
効率のためなのかわかりやすさのためなのか、ローカルでさえあれば再代入まみれの副作用まみれっていうように感じる

loopも結局使い方によっては関数型の繰り返しっぽいっちゃぽいんだけど、どう使うにしろlispっぽくはないよね?
そのへんどう思われてるのか気になる。気軽に使っていいものなの?

90 :デフォルトの名無しさん:2014/11/12(水) 00:52:40.52 ID:fuf0dhj5
CLはマルチパラダイム言語。 そう書いてある。

91 :デフォルトの名無しさん:2014/11/12(水) 00:58:18.03 ID:bYyH4m5K
CommonLispはマルチパラダイム言語であって、別に関数型であろうとしているわけではない
Lispは歴史的な理由で関数型と勘違いされているが、手続的にもかけるし関数的にも書けるしOO的にも書ける
状態が増えると保守性もろもろが落ちるのは真なので、そこらへん意識しつつ、適材適所で書けばいい

92 :デフォルトの名無しさん:2014/11/12(水) 01:25:54.24 ID:6Jeysito
>>90>>91
マルチパラダイムってのは確かに書いてあったけど、利用者側はなるべく関数型っぽく書こうとするべきなのかなと思っていた
Scalaとかだとマルチパラダイムだけどなるべく関数型でかくことが推奨されてるイメージがある
なんでも関数型っぽく書くのではなく、わかりやすく書きやすく目的にあったように書きましょうというのがCLの正しいスタイルなのかな?

つまり状況に適していると判断できればloopをつかうことをためらう正当な理由はないってことか。
性能もdo系統や末尾再帰と比べて申し分ないようだし

93 :デフォルトの名無しさん:2014/11/12(水) 01:37:55.86 ID:/4vNcbkH
出来るだけ関数型で書くかはコーディングスタイルの話じゃないの

94 :デフォルトの名無しさん:2014/11/12(水) 01:42:46.23 ID:bYyH4m5K
概ねそんな感じでいいと思うけど、結局はどんな書き方も許されているので利用者が適宜判断する以外ないってだけかなあ
CommonLispとしての正しいスタイルというものはたぶんない

95 :デフォルトの名無しさん:2014/11/12(水) 03:37:37.47 ID:lROmcFul
Lisp族は利用者が対象に最適と考える記述を書きやすくしている
他の言語は言語作成者が最適と考える記述を書きやすくしている

96 :デフォルトの名無しさん:2014/11/12(水) 07:03:56.02 ID:1phNlnMj
mapcarは知ってるけど他のmap系は知らないので
hyperspecを眺めていたら疑問に思ったので質問します。

結果を返さないし反映もされないmapcは
どんな有用性があるのでしょうか。
おそらく私の無知なのでしょうが
mapcの存在する意味、使いどころが解りません。
どなたか説明出来ませんか。

97 :デフォルトの名無しさん:2014/11/12(水) 12:30:36.42 ID:imZE8AUt
副作用

98 :デフォルトの名無しさん:2014/11/12(水) 16:34:38.00 ID:l7WlF7lN
>>96
97のとおり副作用目的で使う
用途としてはdolistと同じだがmapcはそれより昔からある
他の言語でいうとRubyのmapとeach、Schemeのmapとfor-eachのような関係
dolistがあるので存在意義が薄れた

99 :デフォルトの名無しさん:2014/11/12(水) 17:21:10.90 ID:PsXMXR/P
(dolist (obj lst) (f obj))
の場合は
(mapc #'f lst)
に出来て簡潔

100 :デフォルトの名無しさん:2014/11/12(水) 22:04:39.40 ID:6H3fSFab
CL はマルチパラダイムなのは認めるけど、最近のパラダイムを取り込めてなくないか?
誰か haskell の型システムを完璧にCLに取り込むべきだ。(liskell は死んだっぽいし)

101 :デフォルトの名無しさん:2014/11/12(水) 22:24:25.19 ID:HM1OSRRp
S式で書かれたMLコードを、静的な型チェックかけたあとでLISPに変換する
ML2CLとか誰か作ってくれ

102 :デフォルトの名無しさん:2014/11/12(水) 23:39:16.85 ID:6Jeysito
静的型付けをもってこいということ?

103 :デフォルトの名無しさん:2014/11/13(木) 02:37:58.35 ID:vuqKX1tf
>>100-101
ttps://github.com/rvirding/lfe
erlangをlispとして使う奴ならあるよ、型チェックの為にMLだったらerlangでもよくね?

90 KB
新着レスの表示

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)