07/07/15 16:57:09
>>281
clispのことでは
事実をただの煽りとして受け取った時点で
これ以上何も言うつもりはないけどさ
284:デフォルトの名無しさん
07/07/15 16:59:07
lisp脳の他にschemerには再帰脳の恐怖もあるよな…
285:デフォルトの名無しさん
07/07/15 17:02:28
やっぱloopの話題になると荒れるね
286:デフォルトの名無しさん
07/07/15 17:19:40
主要な処理系てclisp のことなのかよ。じゃあ sbcI については誤解はとけたのね。商用も大丈夫だし、わさわざ出来ない環境さがしてんのかとオモタョ ゴメンネ
287:デフォルトの名無しさん
07/07/15 18:58:55
scheme最強
288:デフォルトの名無しさん
07/07/15 19:00:19
>>287
氏ね
289:デフォルトの名無しさん
07/07/15 21:06:04
いい加減にSchemeはゴミだって認めようよ。
290:デフォルトの名無しさん
07/07/15 21:36:36
CLerから出てくる語彙が精一杯考えて氏ねとかゴミなのはよくわかったよ
291:デフォルトの名無しさん
07/07/15 21:38:55
スルー推奨
292:デフォルトの名無しさん
07/07/15 23:28:14
Schemeは子供用のおもちゃみたいなもの
293:デフォルトの名無しさん
07/07/15 23:30:13
>>290
巣へお帰りください
スレリンク(tech板)
294:デフォルトの名無しさん
07/07/15 23:40:38
RHELユーザが 「plan9はアプリが少ない」 って言ってるようなもの
295:デフォルトの名無しさん
07/07/16 21:01:29
質問です。
2つのリストを、それぞれシンボルの集合とみなして、
左のリストと右のリストが一致するかどうかを判定し、
一致するなら右のリスト中のシンボルのそれぞれの
左に対応する位置インデックスを得たいのですが、
一個一個線形探索するより効率の良い方法はあるでしょうか?
(set-compare-pos '(a b c) '(b c a))
=>(0 2 1) ; 一致したのでそれぞれの位置インデックスを返す
(set-compare-pos '(a b c) '(b c a d))
=>nil ; 一致しない
296:デフォルトの名無しさん
07/07/16 21:07:04
ごめんなさい間違えました。
(set-compare-pos '(a b c) '(b c a))
=>(2 0 1) ; 一致したのでそれぞれの位置インデックスを返す 。
これの意味は、
左の集合のaは、右の集合の2番目にある
左の集合のbは、右の集合の0番目にある
左の集合のcは、右の集合の1番目にある
です。
297:デフォルトの名無しさん
07/07/16 22:19:15
>>295
ハッシュテーブル使えば線形時間でできるんじゃないかな
298:297
07/07/16 22:27:48
重複がある可能性は考えてないけどこんなもんかな。
集合が一致してなきゃいけないってとこでややこしくなった。
(defun set-compare-pos (s1 s2)
(let ((table (make-hash-table :test 'eq)))
(dolist (x s1)
(setf (gethash x table) nil))
(do ((c 0 (1+ c))
(s s2 (cdr s)))
((null s))
(if (cadr (multiple-value-list (gethash (car s) table)))
(setf (gethash (car s) table) c)
(return-from set-compare-pos nil)))
(mapcar (lambda (x) (or (gethash x table)
(return-from set-compare-pos nil)))
s1)))
299:デフォルトの名無しさん
07/07/16 22:57:19
ごめんなさい重複は無い物と考えてくださって結構です。
よって、一致する条件では左右の集合は同じ長さになります。
hashテーブルの存在忘れてました!
ありがとうございます。
300:デフォルトの名無しさん
07/07/17 00:26:34
300ゲットー
>>274
良さそうだ。ま、実質同じだけど、ちょっと手抜きで関数一個で書けばこんなかな。
(defun fn (s)
(if (atom s)
(format t " ~a" s)
(progn (format t "[")
(fn (car s))
(mapcar #'fn (cdr s))
(format t "]"))))
301:デフォルトの名無しさん
07/07/17 01:41:21
>>300
(fn '(a . b)) が失敗しちゃうよ。
302:300
07/07/17 21:01:51
>>301
見落としてました……出なおしてきますorz
303:デフォルトの名無しさん
07/07/18 22:34:36
>>98と同じ質問なのですが
CommonLispでCGIを書きたいのですが、
requireすると標準出力にダラダラと出力されてしまって
(何かコンパイルとかシステムをロードうんぬんみたいなメッセージ)
CGIなのでそれがHTML画面に表示されてしまいます。どうすべきでしょうか?
CGI自体はshで、
sbcl --noinform --load hoge.fasl
としています。
eval-whenとかを使えばよいのではないかと思いついて、
(eval-when (:compile-toplevel) (require ...))
とか、試してみたんですが、エラーになってしまう模様。
:load-toplevelでは意味ないですよね??load時にrequireしたら結局出力が出てしまう・・・
どうすべきなんでしょうか?そもそもeval-whenは関係ない?
304:デフォルトの名無しさん
07/07/18 23:00:28
何回か出ているが、SBCL で CGI というのはオススメできない。
FastCGI にするか、mod_lisp をつかうか、huchentoot をつかうか、
ソケット経由でリクエストを SBCL プロセスに投げる CGI を C で書くとか
いろいろやりかたはあるけど、SBCL そのものを CGI として呼び出すのはやめとけ。
無理矢理強行しても Java で CGI とか Rails/CGI みたいな悲しいパフォーマンスになる。
305:デフォルトの名無しさん
07/07/18 23:04:50
で、 require のメッセージを出したくない場合は、必要なものを全部 require した状態で
(save-lisp-and-die "hoge.core") としてイメージを生成して起動時に
sbcl --core hoge.core --noinform --load ... とかする。
しつこいかもしれないが、SBCL そのものを CGI として呼び出すのはやめとけよ。
スケーラビリティからインタラクティブなプログラミングのメリット台無しまであらゆる意味でオススメできない。
306:デフォルトの名無しさん
07/07/19 00:29:12
一般論として、いまどき CGI というもの自体あまりお勧めではない
307:デフォルトの名無しさん
07/07/19 02:50:20
じゃあ何よ
308:デフォルトの名無しさん
07/07/19 04:18:14
あ・・・あじゃ・・・・
(↓ここで「アジャコング」とか書こうと思ったけどやるせなさ過ぎて止める奴)
309:デフォルトの名無しさん
07/07/19 05:32:01
アジャコンゲ
310:デフォルトの名無しさん
07/07/19 07:32:57
つaserve
sbclでちゃんと動くかは知らないけど。
311:デフォルトの名無しさん
07/07/19 18:27:27
ここで満を持して kahua 登場! うわなにをs
312:デフォルトの名無しさん
07/07/19 22:17:54
何もシネーよ
313:デフォルトの名無しさん
07/07/19 22:53:41
Kahua って 304 のいう
> ソケット経由でリクエストを SBCL プロセスに投げる CGI を C で書くとか
に相当するのかな?
314:デフォルトの名無しさん
07/07/20 03:03:43
しない
315:デフォルトの名無しさん
07/07/27 18:44:26
ずいぶん前に、Windows版のsbclで日本語(sjis)が使えるようになったって
うわさを聞いたのですが、今使おうとしてもエラーが出ます。
うわさはデマだったのでしょうか?
316:デフォルトの名無しさん
07/07/27 18:46:41
心のきれいな人にしか使えないんです
317:デフォルトの名無しさん
07/07/27 19:16:56
そういうこと
318:デフォルトの名無しさん
07/07/27 19:31:30
>>315
死ね
319:デフォルトの名無しさん
07/07/28 01:20:00
>>318
こういうひとには使えません
320:デフォルトの名無しさん
07/07/29 23:04:55 0
(setf *trans-code*
'(("add" . #'(lambda () (format t "add")))
("sub" . #'(lambda () (format t "sub")))
("mul" . #'(lambda () (format t "mul")))
("xor" . #'(lambda () (format t "xor")))))
(setf x (cdr (assoc "add" *trans-code*
:test #'string=)))
(funcall x)
こうすると"add"と表示されることを期待したのですが,
FUNCALL: #1=#'(LAMBDA NIL (FORMAT T "add")) is not a function name; try using a symbol instead
[Condition of type SIMPLE-TYPE-ERROR]
となってしまいます.これは何がおかしいのでしょうか?
321:デフォルトの名無しさん
07/07/29 23:26:53 0
>>320
#' が ' の中にあるのでクォーティングされてしまっておるのだね。
`(("add" . ,#'(lambda ...
みたくするべし。
322:デフォルトの名無しさん
07/07/30 12:22:00
>>321
ありがとうございました.追加で質問したいのですが,
なぜ>>320のコードではうまくいかないのか良くわかっておりません.
できれば解説などを加えていただければ...おねがいします.
323:デフォルトの名無しさん
07/07/30 20:52:26
>>322
replで一行づつ打ちこめば自明じゃないか?
324:デフォルトの名無しさん
07/07/30 20:55:40
>>322
(print x) して両者を比べてみよう
CLISP だったらこうなる
#'(LAMBDA NIL (FORMAT T "add"))
#<FUNCTION :LAMBDA NIL (FORMAT T "add")>
ちょっとわかりにくいかもしれないけど上は
(FUNCTION (LAMBDA NIL (FORMAT T "add")))
というリストで、下はクロージャ。
325:デフォルトの名無しさん
07/07/30 21:33:37
>>322
#' とか ' とかってのは省略系にすぎないことを思い出そう。
あとは自分が read や eval になった気分でよく考えてみよう。
326:デフォルトの名無しさん
07/07/31 00:04:11
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
327:デフォルトの名無しさん
07/07/31 00:33:32
とは言っても俺ほどじゃないと思うけどな
328:デフォルトの名無しさん
07/07/31 00:47:14
CommonLispでGUI作るときってどういう風にしてるの?
329:デフォルトの名無しさん
07/07/31 00:51:28
GUIなんかいらねーよ
330:デフォルトの名無しさん
07/07/31 01:13:00
>>328
CLX が最強
331:デフォルトの名無しさん
07/07/31 08:11:15
なんか荒れまくってるなぁ。 >>328 商用の処理系は GUI ライブラリがついてくる。Allegro や LispWorks には GUI ビルダーも附属してるね。
フリーの処理系は Tcl/Tk とか Win32 API とか CLX とか OpenGL とか SDL みたいな低レベル API でがんばる。
332:デフォルトの名無しさん
07/07/31 11:28:52
どこもかしこも夏の香りが漂ってるな
333:デフォルトの名無しさん
07/07/31 11:46:33
フリーの処理系はffiがぶっ壊れてるから使い物にならんよ
334:デフォルトの名無しさん
07/07/31 11:46:52
>>328
OpenMCL なら Cocoa が使えたと思う
335:デフォルトの名無しさん
07/07/31 12:03:04
>>333
ドザ乙
336:デフォルトの名無しさん
07/07/31 16:51:37
>>333
フリーの処理系はソースあるんだから自分で直せばいいじゃん
337:デフォルトの名無しさん
07/08/01 01:02:14
おまいらありがとう。
>Tcl/Tk とか Win32 API とか CLX
>OpenMCLならCocoa
この辺は分かるけど
>OpenGL とか SDL
この辺になると自前でウィジェット作るの?
338:デフォルトの名無しさん
07/08/01 03:20:31
探せばいろいろあるらしいぜ。探してない俺にはわからんが。
339:デフォルトの名無しさん
07/08/01 09:37:29
そういえば McCLIM の事を忘れてた。
一応、標準 GUI ライブラリになる事を狙ってたんだよね。
340:デフォルトの名無しさん
07/08/01 17:49:10
{x=a} begin y=x; x:=x+y end{x=2a} を証明せよ。
341:デフォルトの名無しさん
07/08/02 22:23:54
ワッハッハwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
342:デフォルトの名無しさん
07/08/03 14:40:26
LispのGCの様子をヴィジュアルに見せてくれるツールとか
そういうものってないのですか?
自分のプログラムでGCがどんな風に動いてるのか見てみたいのですが...
343:デフォルトの名無しさん
07/08/03 16:04:15
大昔の話だが、中西先生のAPPLE LISPは見えたな。APPLE IIのエミュレータで動かんかな?w
344:デフォルトの名無しさん
07/08/04 00:20:21
>>315
うわさだかデマだかを流した張本人です。
どんな環境でどのようなエラーが出るのでしょうか。
最近 2ch はあまり見てないので、sbcl-devel@ か、英語が苦手なら俺宛に
メールを貰えるとありがたいです。
>>316-317 >>319
以前手元でテストした時はちゃんと使えたので、心がきれいでなくても平気だと
思います。
345:デフォルトの名無しさん
07/08/04 00:29:32
心の汚い俺でも安心だな
346:デフォルトの名無しさん
07/08/04 02:52:20
>>342
和田先生はGCルーチンをデバッグするとき、
printf()を使うところまでは一般人同様なのだが、
それで出力するのは実はPostScriptで、
consセルが増えたり減ったりする様子を
ビジュアルに把握しながらデバッグしてた、という話を聞いたことがある。
347:315
07/08/04 02:54:56
>>344
WindowsXP sp2でバージョンは1.0.6のインストーラー版です。
症状は、コンソール上で実行したときには
* (print "あ")
"あ"
"あ"
*
と日本語が使えるのに、(print "あ")とだけ書いてあるmain.lispを用意して、
"C:\Program Files\Steel Bank Common Lisp\1.0.6\sbcl.exe" --load main.lisp
とすると、
This is SBCL 1.0.6, an implementation of ANSI Common Lisp.
More information about SBCL is available at <URLリンク(www.sbcl.org)
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
This is experimental prerelease support for the Windows platform: use
at your own risk. "Your Kitten of Death awaits!"
348:デフォルトの名無しさん
07/08/04 02:55:49
debugger invoked on a SIMPLE-ERROR:
Error during processing of --eval option (LOAD #P"main.lisp"):
can't happen
This is probably a bug in SBCL itself. (Alternatively, SBCL might have been
corrupted by bad user code, e.g. by an undefined Lisp operation like
(FMAKUNBOUND 'COMPILE), or by stray pointers from alien code or from unsafe
Lisp code; or there might be a bug in the OS or hardware that SBCL is running
on.) If it seems to be a bug in SBCL itself, the maintainers would like to
know about it. Bug reports are welcome on the SBCL mailing lists, which you
can find at <URLリンク(sbcl.sourceforge.net)
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE] Ignore and continue with next --eval option.
1: [ABORT ] Skip rest of --eval options.
2: Skip to toplevel READ/EVAL/PRINT loop.
3: [QUIT ] Quit SBCL (calling #'QUIT, killing the process).
((LAMBDA (SB-IMPL::E)) #<SB-INT:BUG {A60A9D9}>)
0]
となる、というものです。
>英語が苦手なら俺宛にメールを貰えるとありがたいです。
メールしようにもアドレスが分かりません。
349:デフォルトの名無しさん
07/08/04 10:45:16
>>347
1.0.8 では直ってます。
Windows 版は
> This is experimental prerelease support for the Windows platform: use
> at your own risk. "Your Kitten of Death awaits!"
とあるように、まだ試験版なので、配布されてるバイナリは bootstrap 用
くらいに考えておいてください。
350:デフォルトの名無しさん
07/08/04 21:05:27
なぁ、>>1のパワーズって誰だ??
351:デフォルトの名無しさん
07/08/05 01:26:01
>>346
かっこいい
352:デフォルトの名無しさん
07/08/05 06:57:04
CLOS の良い日本語解説書ってないかな?
bit別冊 Common Lisp オブジェクトシステム -- CLOSとその周辺
というのがいいらしいのだが、絶版で
URLリンク(www.fukkan.com)
あと、1 桁のところで、復刊リクエストまで行ってないんだ…orz
353:デフォルトの名無しさん
07/08/05 08:48:30
また懐かしい本だな…。今時売れねーんじゃねーか?
仕組はブラックボックスのままな HowTo 本は売れる世の中で、
メソッド探索のアルゴリズムだの実装まで触れてるような本が売れるとは思えん。
学生時代に読んで、いきなり「CLOS ではカプセル化なんてどうでもいいんですよ」的な出だしで
カルチャーショックを受けた経験あり。
354:デフォルトの名無しさん
07/08/05 10:01:04
>>352
俺はもう投票済みだわ
あと6人!
355:デフォルトの名無しさん
07/08/05 19:53:20
>>353
個人的には実装まで触れてるというのは、
単なる HowTo なんかよりよほど役立つと思うが、
CLOS 自体の需要が微妙だよな。
Ruby の Matz も推薦とか書けば、Ruby の勢いに乗って売れないか?
売れないか…
356:デフォルトの名無しさん
07/08/05 22:11:48
ところでCLOSってなんて読むの?
今まで「くろす」って読んでたんだけど昨日のLLだと「しーろす」って言ってる人がいた。
357:デフォルトの名無しさん
07/08/05 22:25:49
>>356
どっちでもいい、と件の本には書いてあったよ。
358:デフォルトの名無しさん
07/08/05 22:35:07
>>355
URLリンク(www.rubyist.net)
359:デフォルトの名無しさん
07/08/05 22:38:00
>>356
俺も「しーろす」と読んでるよ。
今まで誰とも CLOS の話をした事が無いから勝手読みだけど。
360:デフォルトの名無しさん
07/08/05 23:30:07
CLOSはシーロスだと思う。
対話によるCommon Lisp入門という本の
第12話 オブジェクト指向プログラミングのはじめに、
「データ抽象の話を押し進めて行くとオブジェクト指向プログラミング
という現代的で実用性の高いプログラミング手法となります。
Common LispにはCommon Lisp Object System(CLOS,シーロス)
という機能が有り,Lisp流のオブジェクト指向プログラミングを可能にしています」
と書いてあるから。
361:デフォルトの名無しさん
07/08/05 23:43:55
URLリンク(www.amazon.co.jp)
これが小さくて読みやすかったので
良いと思ったんだけど
同意された事が無い
362:デフォルトの名無しさん
07/08/06 00:17:05
クロスじゃない?
C-LOS って感じに言葉が別れていないし
シーロスじゃどう考えても変だ
つーかどこかでクロスって注釈振ってある本読んだことあるぞ
363:デフォルトの名無しさん
07/08/06 00:17:56
どう考えても変だとは思わない
364:デフォルトの名無しさん
07/08/06 00:21:30
>>352
↓が定番だったんだが、これも絶版か。大事にしよう。
URLリンク(www.amazon.co.jp)
365:デフォルトの名無しさん
07/08/06 00:22:54
>>363
CMOS をシーモスと読むのと同じ感覚で言っちゃってる
あれは Complementary MOS だから良いけど COMON LISP の COMON で切るのは不自然
366:デフォルトの名無しさん
07/08/06 00:25:26
出版社自体が無くなっちゃったね
367:デフォルトの名無しさん
07/08/06 00:26:18
いっそおまいらCLOS本書け
368:デフォルトの名無しさん
07/08/06 00:26:23
>>366は>>364ね
>>365
別に不自然とは思わない
369:デフォルトの名無しさん
07/08/06 00:33:33
どっちでもいいって書いている文献があるというのに
お前らは何を決めようとしているんだ?
だいたい外国人は日本人みたいに発音とかこだわらんよ。適当。
370:デフォルトの名無しさん
07/08/06 00:43:20
「苦労す」 というダジャレがあるから
おれはクロース派
371:デフォルトの名無しさん
07/08/06 00:46:36
シーエルオーエスじゃだめなのか?
372:デフォルトの名無しさん
07/08/06 00:49:17
桶
373:デフォルトの名無しさん
07/08/06 00:55:43
>>368
不自然と思わない根拠は?
似たような例をあげて貰わないと
374:デフォルトの名無しさん
07/08/06 01:02:16
>>373
不自然と思う根拠を理解できない
ってきりがないぞ。>>369が言うようにどっちでもいいんだよ。
どちらかを不自然と思うのは神経症。
375:デフォルトの名無しさん
07/08/06 01:02:37
最近こことか眺めているんだがCLのコードはどうも長くなってしまうような
URLリンク(ja.doukaku.org)
376:デフォルトの名無しさん
07/08/06 01:06:43
>>374
>どちらかを不自然と思うのは神経症。
俺もそう思う。最近この手のやり取りが増えてる様な気がするが、どうしてだろう…
377:デフォルトの名無しさん
07/08/06 01:10:02
>>374
根拠は提示されているでしょ
意味のある単語を途中で切って分けている
正式ではどちらでもOKだろうが不自然なことは普通理解出来るはず
これが不自然じゃないというなら自然と思える、普通に使っている必要がある
自分は思いつかない、逆ならいくらでも思いつく、SRAM とか
だからそれを教えてくれと聞いているんだけど
これでも理解出来ない?
神経症とかはまぁ別にかまわないよ
378:デフォルトの名無しさん
07/08/06 01:16:32
夏なんだね
379:デフォルトの名無しさん
07/08/06 01:37:15
MPEG(Moving Picture Experts Group)
380:デフォルトの名無しさん
07/08/06 01:45:53
JSON(JavaScript Object Notation)
381:デフォルトの名無しさん
07/08/06 01:47:42
OLAP(OnLine Analytical Processing)
382:デフォルトの名無しさん
07/08/06 01:57:24
すみませんでした
いっぱいありました
383:デフォルトの名無しさん
07/08/06 05:42:34
slimeのビデオを見てたら途中ミニバッファからコマンド
を送っているところがあったのですが、これはslime、処理系
どちらに対して送っていることになるのですか。
helpと打つとslimeのヘルプが表示されるようですし、
change-packageと打つとパッケージが変わるようなので。
また、ミニバッファのCOMMAND:というプロンプトはどの
キーにバインドされているのでしょうか
(コマンド自体はEmacsの機能?)
一応、マニュアルを見てみたのですがこの辺に触れていなかった
ので質問させていただきました。
CLOSで盛り上がってるところすみません。
384:デフォルトの名無しさん
07/08/06 07:53:25
>>375
「無駄に」長いと思うなら直してやれば?俺はコードの圧縮はアセンブラでなら
楽しいけど Lisp のコードを圧縮するよりは見易いほうがいいな。
>>383
, キーだよ。これは SLIME のコマンドだけど、 SLIME が処理系に SWANK 経由で
コマンド送るので change-directory とか処理系も反応する。
385:デフォルトの名無しさん
07/08/06 21:21:16
383です。
> SLIME が処理系に SWANK 経由で
なるほど、そういうことですか。
私の環境 WinXP+Emacs 22.0.50.1+SLIME 2006-12-12 ですが
change-directory 反応してくれました。
384さん ありがとうございました。
386:デフォルトの名無しさん
07/08/06 21:30:54
383です。
忘れてました。SBCL 1.0.6 です。
387:352
07/08/08 00:21:05
多分このスレを見てくれた人だと思うんだが、何人か投票していただいたようで、thx
票数表示が会員限定なんで具体的な数は書かないけど、あと、数票で 100 票です。
登録に個人情報が要るんでめんどくさいんだけど、もし良かったら、投票してやってください。
388:デフォルトの名無しさん
07/08/09 11:40:39
恥を忍んでおたずねします。
最近、Lisp始めたばかりなのですが、
SBCLで関数のパラメータ(引数一覧)を出力する関数が
あるようなのですが、
(documentation 'hoge 'function)
するとパラメータではなく、関数自体の説明しか出てきません。
SBCLのみの機能みたいなのでmanualに書いてあるだろうと
目を通しましたがわかりませんでした。
出力の仕方を教えていただけると幸いです。
389:デフォルトの名無しさん
07/08/09 18:25:08
>>388
URLリンク(www.lispworks.com)
390:デフォルトの名無しさん
07/08/09 21:06:13
>>389
ありがとうございました
391:デフォルトの名無しさん
07/08/12 10:40:21
closの読み方はクロスでもシーロスでもok. この辺は、ukの大学のサイトにあがってる
closのチュートリアルの冒頭に読み方として2つがあげられてるくらいです。
392:デフォルトの名無しさん
07/08/12 10:47:10
これのこと
URLリンク(www.aiai.ed.ac.uk)
>CLOS stands for Common Lisp Object System and is pronounced "see loss" or "kloss".
393:デフォルトの名無しさん
07/08/12 11:05:46
発音記号ってネイティブはあんま知らなかったりするのか?
394:デフォルトの名無しさん
07/08/12 11:17:15
むしろ発音記号がその言語を全然知らない人でも理解できる用じゃね?
自分の母国語の発音を発音記号で理解してる奴はあまりいないんじゃないか。
ネイティブ向けの辞書でも発音記号じゃなくて「そう読めるスペル」で
示してるものもあるよ。その方が発音記号よりもピンときやすいのは自然だろう。
395:デフォルトの名無しさん
07/08/12 12:38:09
>>393
言語学とかの専門家でないと知らなかったりする。
日本のように義務教育で教えている国は珍しいのではないかな。
396:デフォルトの名無しさん
07/08/12 13:23:37
>>395
言語学の専門家が使うのはIPAだし、
日本の義務教育で教えている、辞書業界(?)の記号とは若干違うと思うのだが。
397:デフォルトの名無しさん
07/08/12 13:25:48
日本語をIPAで書ける日本人がほとんどいないのと同じだな
398:デフォルトの名無しさん
07/08/12 13:43:02
日本語だと仮名で書けば問題ないし、実際辞書でもそうなってるじゃん。
399:デフォルトの名無しさん
07/08/12 13:59:07
>>398
確かに大抵それで何とかなる。
それは英語も同じで、>>392みたいにして発音を表せる。
細かいことを言い出すとカナでは足りない。
「ラクトース」と「ラクロス」では「ク」の発音が違うとか。
400:デフォルトの名無しさん
07/08/12 14:03:52
日本語は言文一致したから、
それをしてない英語とそのまま比較はできんかと。
まあ、板違いだからこのくらいにしといた方がいいかもしれんが。
401:デフォルトの名無しさん
07/08/12 14:59:08
>>398
日本語学習者にとってはそうでもない。
同じ「ん」でもnとngとか。
402:デフォルトの名無しさん
07/08/12 22:03:25
おー、俺でCLOS本復刊リクエスト100人になりましたよ。
403:デフォルトの名無しさん
07/08/13 00:25:07
祝!
404:デフォルトの名無しさん
07/08/13 00:39:00
>>402
祝ってやる
405:デフォルトの名無しさん
07/08/13 01:09:07
>>404
一瞬「呪ってやる」に見えた。
406:デフォルトの名無しさん
07/08/15 09:36:04
質問です。
関数型言語って
有る値の集合を有る値の集合へもっていく方法を
記述すると考えてよろしいのでしょうか?
407:デフォルトの名無しさん
07/08/15 09:53:28
その「値」に「関数」っつーのも含まれてるけど、
まあそんな感じだろう。
408:デフォルトの名無しさん
07/08/15 12:11:57
>>406
集合とか意味不明
テンプレ読め
409:デフォルトの名無しさん
07/08/15 13:05:21
>>406
スレ違い
410:デフォルトの名無しさん
07/08/15 15:25:00
写像って意味だっしょ
411:デフォルトの名無しさん
07/08/15 16:32:48
406はなかなか良い筋行ってんじゃネーノ?
URLリンク(karetta.jp)
412:デフォルトの名無しさん
07/08/15 18:13:22
(a b c)
という任意の長さのListがあげられたとき
このすべての組み合わせをリストとして出力する
(a b c ab ac ba bc ca cb)
このようなプログラムって皆さんどうやって書きます?
413:デフォルトの名無しさん
07/08/15 20:14:40
>>411
自演乙
414:デフォルトの名無しさん
07/08/15 20:17:27
そんなもの書かない
415:デフォルトの名無しさん
07/08/15 22:50:36
そんなものが書きたくなったら全体の設計を見直すかな
416:デフォルトの名無しさん
07/08/16 00:30:55
AutoLISPってどうなの?
417:デフォルトの名無しさん
07/08/16 02:18:55
どうもしない
418:デフォルトの名無しさん
07/08/16 02:21:21
>>412
「すべての組み合わせ」の意味が不明確。
abc とか cba とかが入らない理由は?
419:デフォルトの名無しさん
07/08/16 02:34:39
もういいじゃん
420:デフォルトの名無しさん
07/08/21 07:52:33
Lisp処理系ムズすぎ
適当に構造体でリスト作って、
S式パーサ作って、
関数名で条件分岐してリストのメンバをいじくれば良いと思ってたのに
421:デフォルトの名無しさん
07/08/21 09:35:35
そんな感じで出来ちゃうと思うけどなぁ。
もちろん「優れた処理系」を作るのは(他の言語と同じく)難しいし、
「Common Lispの処理系」を個人で作るのはちょいと無謀だけれども、
この界隈の人間がよくやる「楽しく作るマイLisp処理系」程度なら・・・。
クロージャで少々頭ひねるくらいでは。
422:デフォルトの名無しさん
07/08/21 09:41:49
>>420
ここら辺参考にならないかな
L2Lisp in Ruby(インタープリタ)
URLリンク(codezine.jp)
JavaScriptでつくるSchemeインタプリタの基礎の基礎(lisp, js, webdev, webapp)
URLリンク(codezine.jp)
Javaで作るオリジナル言語:ITpro
URLリンク(itpro.nikkeibp.co.jp)
423:デフォルトの名無しさん
07/08/21 11:04:02
>>420
そんなに難しいかい?
8ビットマシンの頃でも基本の処理系はポイポイ作れた記憶があるんだけど。
実行効率とか下段をVMでとかにすると結構しんどいかもしれないけが俺Lispならそんなに難しいものじゃ無いはずなんだけど。
まさかCommonLisp全部みたいな話とか継続入れたいとか言うスタック操作がマンドクサイこと言うと別かもしれんが。
424:デフォルトの名無しさん
07/08/21 13:03:56
>>421,422,423
URLリンク(www.jsk.t.u-tokyo.ac.jp)
ここ読んでるんですけれど、即死しそうです
JAVAとかJavaScriptとかRubyで作ると比較的簡単なのかなぁ
425:デフォルトの名無しさん
07/08/21 13:58:15
URLリンク(www.okisoft.co.jp)
俺はここ見ながらC++で作った。
Javaで説明されてるけど、JavaからC++への脳内翻訳はまぁ、それほど難しくないし。
426:デフォルトの名無しさん
07/08/21 21:56:36
>>424
それで楽になるのはGCだけじゃないかと思う。
427:デフォルトの名無しさん
07/08/21 22:05:53
俺 Lisp ネタは本スレで。一応ここは Common Lisp 入門スレなので。
俺 Lisp ってーのはよ、一週間もまじめに取り組めばできちゃう。
で、 99% はやったーできたーの後に「Lisp をものにしたぞ」と勘違いしちゃう。
そこはスタート地点だという事を心してほしい。ほんとに。
428:デフォルトの名無しさん
07/08/21 22:22:23
CLTL読んでるけどでかい、でかすぎる。
でも楽しい。
429:デフォルトの名無しさん
07/08/21 22:33:35
仕様なしで実装だけあるほうが良いという連中が信じられない。
現行バージョンとかそんな殺那的な基準でいいのか……
430:デフォルトの名無しさん
07/08/21 22:55:46
>>429
少なくとも入門スレでは、言語の仕様が先か実装が先かなどというのは全く本質的な問題ではないと思うが。
431:デフォルトの名無しさん
07/08/21 23:16:39
先とか後とかじゃなくて有無の話ね。
432:デフォルトの名無しさん
07/08/21 23:50:55
>>428
てお?
433:デフォルトの名無しさん
07/08/22 01:00:57
このスレでCLTLって言ったらCommon Lisp The Language ,Guy L. Steele Jr.じゃないの?
434:デフォルトの名無しさん
07/08/22 11:10:27
>>428
仕様書(?)の癖に妙に饒舌なGLS節がたまらんよねw
435:デフォルトの名無しさん
07/08/23 01:28:40
Practical Common Lisp 155ページなのですが、COPY-TREEで((1 2) (3 4) (5 6))を
複製したものとオリジナルが共通で参照するオブジェクトが数値の5,6とシンボルNILってのは
何故ですか?1,2,3,4と5,6の違いが判らないので教えてください
436:デフォルトの名無しさん
07/08/24 01:12:49
>>435
それ、ここかLisp Schemeスレかで以前俺が話題にした気がする。
そんときは確かめてくれた人がいて著者の勘違いって話だったと思う。
過去ログ見て。
437:デフォルトの名無しさん
07/08/24 22:19:43
どう勘違いしたんだ
438:435
07/08/25 00:57:24
Peter Seibel本人にメールしてみました。
「混乱させてスマン、第3刷では直っているハズだから」とのことです。
439:デフォルトの名無しさん
07/08/25 13:02:07
俺そういうメールに返信するバイトしてた。
440:デフォルトの名無しさん
07/08/25 13:21:19
俺はメールしたと偽るバイトしてた。
441:デフォルトの名無しさん
07/08/29 13:57:52
Emacs Lispでいう(string-to-int)ってCLispにないの?
442:デフォルトの名無しさん
07/08/29 14:14:20
グハラムのANSI Common Lispを読んでいます
ループを再帰で書くサンプルが出てくるのですが
ループ数が多くなるとスタックがえらく積み上がっていくんじゃないか、
だとしたらループの実現としてはあまりいい方法ではないのではないかと
思うのですが、どうなんでしょう?
あくまで「こういう書き方もできるよ」という例なのでしょうか?
443:デフォルトの名無しさん
07/08/29 14:28:08
>>442
ほとんど末尾再帰だろ
末尾再帰をループに展開できないコンパイラはぶっ壊れてる.
444:デフォルトの名無しさん
07/08/29 15:15:52
>>441
parse-integer
445:デフォルトの名無しさん
07/08/29 19:44:33
>>442
> グハラム
ちょっと入れ替えただけで急にイスラムな感じになるな。
446:デフォルトの名無しさん
07/08/30 01:22:51
ではclispはぶっ壊れてると・・・
447:デフォルトの名無しさん
07/08/30 02:07:22
コンパイルすれば末尾再帰をループ化する>CLISP
448:442
07/08/30 02:11:41
レスありがとうございました
末尾再帰というものだったら問題ないんですね
少し気になったのですが
Lisp界ではよくあることなんですね
449:デフォルトの名無しさん
07/08/30 02:30:23
>>447
>>273-276
450:デフォルトの名無しさん
07/08/30 02:33:05
実際末尾再帰スタイルで書くつもりならSchemeで書いたほうがいい。
Common Lispのはあくまでも最適化オプションでしかないから過信できない。
451:デフォルトの名無しさん
07/08/30 04:48:19
Schemeは式の評価順序が決まっていないのが嫌いなんだよね。(副作用させんなって言うのは無しね)
452:デフォルトの名無しさん
07/08/30 07:46:50
>>450 Scheme はコンパイル関連機能があくまでもオプションでしかないから過信できません
453:デフォルトの名無しさん
07/08/30 08:37:34
ていうか「過信」って言葉がそもそも、実際の在りよう以上のことを信じることであって、
Common LispだろうがSchemeだろうが隣のおばちゃんだろうが、過信しちゃいけないのは同じ。
454:デフォルトの名無しさん
07/08/30 09:42:19
「xを過信してはいけない」という言い回しは、単純に過信を戒めてる訳じゃなくて、
「お前はxを過信している」とか「xは過信されがちだ」みたいな意味が入ってる。
455:442
07/08/30 11:59:10
やっぱり使わない方がいいんですね
456:デフォルトの名無しさん
07/08/30 12:08:19
>>455
時と場合による.
457:デフォルトの名無しさん
07/08/30 12:14:39
>>455
lispのような抽象化の高いプログラミングで再帰
を使おうとしないとはかなり不幸だろう.
10年前ならいざ知らず,今はコンピュータのメモリもCPU性能も
有り余るほどある.その中で,ある程度効率を犠牲にしてでも,
抽象化のはしごを上ってわかりやすいアルゴリズムを記述できる
のであればそっちを優先すべきでは?
458:デフォルトの名無しさん
07/08/30 13:06:02
>>455
まあ真面目に入門書の一冊も読むべきだね。
基本がぜんぜんなってない感じ。
459:デフォルトの名無しさん
07/08/30 13:24:25
>>455
白黒はっきりさせたい性格なのだろうが、世の中そんなに単純には出来ていないのだ。
460:デフォルトの名無しさん
07/08/30 13:38:57
>>455
ちなみに組込み屋の人ですか?
461:デフォルトの名無しさん
07/08/31 02:00:35
455の人気が凄いw
462:デフォルトの名無しさん
07/08/31 03:16:20
destructuring-bindの素敵な訳語を募集。
野田さんトコだと構造化代入ってなってるけど、`de-'の雰囲気がどこかに
消し飛んでるし`bind'って代入なのか?って気がしないでもない。
漏れの頭では脱構造束縛とか構造分解束縛とかしか思い浮かばないんだが、
やっぱり気持ち悪い?
OnLisp翻訳の偉業にケチをつけるつもりはまったくないのでそこんとこだけ
誤解のないよう。英語のまま何気なく読んでる文章をきちんとした
日本語に書き出そうとするのがこんなに面倒だとは思わなかった。
463:デフォルトの名無しさん
07/08/31 03:27:09
`構造'意識しなくてもいいか。
分解束縛とか分配束縛とかで意味通じるかな。
連投で独り言スマン。
464:デフォルトの名無しさん
07/08/31 05:56:15
独り言気持ち悪い
465:デフォルトの名無しさん
07/08/31 07:30:18
URLリンク(practical-scheme.net)
>p.96 ほか (leque, 2007/04/14 21:40:45 PDT)
>「destructuring」の訳語を「分配」とすることにすこし違和感があります。
>destructuring-bind の lambda-list が単純なリストである場合はよいのですが、
>入れ子のリストになっているような場合も考えると、「分解」「脱構造化」といったような、
>構造(structure)を意識したような訳語の方がしっくり来る気がします。
>
>* これはGuy Steele本の和訳で採用されていた訳語に統一した結果です.
>ところでせっかく仔細にコメントをいただいているのに,
>単純なものしか目を通しておらず,申し訳ありません.
>いずれじっくり検討させていただきます.(野田)
466:デフォルトの名無しさん
07/08/31 09:37:39
「パターンマッチ」でいいんじゃないかという気が
467:flatline ◆r6EONKKhcc
07/08/31 10:00:52
>>462
ちなみに「構造化代入」という訳はあまり深く考えてつけたものではありません.
>>466
複数のパターンから選べないとパターンマッチとは言えないような気がします.
468:466
07/08/31 10:30:40
そうですか?なんでだろう。
469:デフォルトの名無しさん
07/08/31 11:29:00
俺もパターンマッチって感じがする。
マッチに失敗すればエラーになるし。
470:デフォルトの名無しさん
07/08/31 18:30:16
>>462
気持ちはわかるが、destructuring-bind という固有のスペシャルフォーム名に
とらわれすぎの気がする。
まさか「なでしこ」みたいな日本語CLをつくろうって話じゃないんでしょ。
同種の概念に対する一般的なタームとしては分割代入とかじゃない?
471:デフォルトの名無しさん
07/08/31 21:09:55
>>468
複数の候補からマッチするものを見つけるのがマッチだと思う
472:デフォルトの名無しさん
07/08/31 21:11:04
>>462
deの雰囲気を残すべきだとは思わない。逐語訳にこだわりすぎでは?
473:466
07/08/31 22:52:58
>>471
それだけがマッチングとは思えないなあ。
正規表現がマッチするしないって言い方があるけど、
あれは何かを複数の候補から見つけるわけじゃないでしょう?
474:デフォルトの名無しさん
07/08/31 23:51:54
>>473
「マッチする」という言い方自体が、そもそも「マッチしない」場合の存在を前提にしているのでは?
そういう意味では正規表現も多くの場合は複数の候補から見つける操作だと思う。
475:462
07/09/01 02:42:29
>>470
日本語CL作ろうなんて気は毛頭ありません。
でも見る人が見れば何やってんかバレバレなんですけどね。
>>472
逐語訳にこだわってるつもりはないんですが、Lisp/Schemeのコンテキストで
代入と束縛を同列に扱うのは違和感があると感じるのは僕だけかなぁ。
日本語ではどう表現するのが普通だ、みたいな一般的に受け入れられている
のはないんですかね。大体原著で読むのでその辺の感覚がわからんです。
476:flatline ◆r6EONKKhcc
07/09/02 16:53:41
私はむしろ >>473 に賛成ですが,
>>467 の真意はむしろ
「destructuring-bindを「パターンマッチ」と言ってしまうと,
Ocaml, Haskellの方面から
『複数の候補から選ぶこともできないのにそんな大層な呼び名をするとは!』と
文句が来そうなので自粛した」
みたいな感じですかね.
つーかその後 §18.4で
「パターンマッチングは構造化代入(書籍では分配)の一般化だ」と続いているので...
束縛と代入については,レキシカル・スコープの何たるかを分かってコードが書ける人には
言葉の問題に過ぎず,大した違いではないと思います.
477:flatline ◆r6EONKKhcc
07/09/02 17:02:45
そうそう,On Lispの第3刷が9月半ばに出るそうです.
(読者の方々からいただいた修正意見を反映してあります)
「売れた数だけLispの存在感が拡大している」と(粗っぽく)見積もるとすると
これは訳者として嬉しいことです.
実際,webをさ迷っていると,これまでLispに縁のなかった人もけっこう買ってくれているようですし.
(そういう人には終盤はテクニカルに高度過ぎると思いますが,
「Lisp Hackerのスタイル」的なものは伝わることを期待)
478:デフォルトの名無しさん
07/09/02 17:26:50
>>477
Lispのなんたるかってあたりがかかれた本って古い書籍が多くてさらに尽く絶版だったりするから
ものすごくありがたかったんじゃなかろうかとおもう(対象想定読者層にとって)
まじめな話共立出版のbit別冊が売ってたら読むかもしれない層って多いと思うんだけどなぁ。
479:デフォルトの名無しさん
07/09/02 17:28:49
>> 476
> 束縛と代入については,レキシカル・スコープの何たるかを分かってコードが書ける人には
> 言葉の問題に過ぎず,大した違いではないと思います.
レキシカルスコープの何たるかをわかってコードを書くに至っていない
入門レベルの読者が読むことを想定した場合は束縛と代入は使い分けるべき、でFA?
480:デフォルトの名無しさん
07/09/02 22:46:13
レキシカルスコープの何たるかをわかってコードを書くに至っていない人には
縁のない話題だと思うが
481:デフォルトの名無しさん
07/09/02 23:52:25
あんま流れと関係ないけど束縛だの代入だのより、スコープとエクステントの概念を叩き込むべき。
アセンブラと C を覚えて万能感に浸っていたかけだしのヘタレだった俺は、これを叩き込んでくれた師匠に本当に感謝している。
副作用だの破壊的操作だのは結局物理レベルではレジスタの値変更してんだからよー
キタナイ現実を見ないのが美しいってのは Schemer にゃーお似合いだが Lisper はそんな風になるべきではない。
つうか訳語は分配でいいような気がするけど…別に実際にバラすわけじゃなくて、元の構造の部分を変数に束縛するだけだし…
482:デフォルトの名無しさん
07/09/03 01:18:14
>>481 は今でもなにもわかってない事がわかった
483:デフォルトの名無しさん
07/09/03 05:50:47
ああ、それは二十歳くらいの頃によくかかる病気ですね。
自分の人間観察眼に根拠の無い自信持っちゃって、あちこちで誰かの言葉に触れては
「こいつはわかってない、俺にはそれがわかる」って小鼻をひくひくさせてしまうんです。
あと5年もすれば、思い出すだけで死にたくなる過去になりますよ。
484:デフォルトの名無しさん
07/09/03 06:52:52
わかってるやつがなんでにちゃんなんかやってんだろ
485:デフォルトの名無しさん
07/09/03 07:23:28
おまえのどうるいだけがにちゃんやってるわけじゃないからだよ
486:デフォルトの名無しさん
07/09/03 07:34:54
>>485
君は集合の基礎を覚えた方がいい
ベン図とか
487:デフォルトの名無しさん
07/09/03 08:05:32
まずは君がコミュニケーションの基礎を学ばないことには
488:デフォルトの名無しさん
07/09/03 10:14:22
わかってない奴すべてを含む集合は果たして平穏無事であるか
489:デフォルトの名無しさん
07/09/03 12:58:41
あるときっと。信じれば夢はきっと叶うさ。
490:デフォルトの名無しさん
07/09/03 15:12:26
2ch で遊ぶのはいい加減にして、早く誰も読まない論文を書く作業に戻るんだ。
491:デフォルトの名無しさん
07/09/03 16:19:32
論文を書くためにはネタを仕込まないとね。
それはともかく、Common Lispで書いたソフトをコンパイルしておいて
他の.exeから呼び出して実行するなんて使い方はできるものだろうか?
分かる人が居たら教えてくれ。
既存のGUIと通信を行うモジュールを流用して計算エンジン部分だけLispで作ってみたい。
あ、プラットフォームはその既存のGUIの関係でWindowsです。
492:デフォルトの名無しさん
07/09/03 16:27:22
誰も読まない論文
ってのはなかなか哀愁を誘う良い言い回しであるなw
493:デフォルトの名無しさん
07/09/03 16:45:25
ライトオンリー
494:デフォルトの名無しさん
07/09/03 18:25:39
Lispって科学技術計算に向いてる?
495:デフォルトの名無しさん
07/09/03 19:26:44
愛を育てるのには向いてる
496:デフォルトの名無しさん
07/09/03 19:30:54
講座初日に眼鏡を忘れ、倫理学と論理学の教室を読み間違えた挙げ句、出席を取らない講師に突然愛を語られたみたいなものだろうか?>>495
497:デフォルトの名無しさん
07/09/03 19:36:39
>>491
できる。教えてもらわないと出来ないような人には難しいかもしれないが。
498:デフォルトの名無しさん
07/09/03 20:17:54
は?
499:495
07/09/03 20:21:37
愛と AI をかけました………………
500:デフォルトの名無しさん
07/09/03 21:53:12
>497 Thanx!
可能だと言う事がハッキリするだけでもやる気が出るよ。
何しろこっちはLispに関して全くの素人なので
これから勉強しながら方法を探すよ。
ところでそういう事に便利そうな商用Lisp
(Allegro Common Lispなど)を使えとか
言うんじゃないよね。あれ、高いからな。
自分ではKCLを使えばコンパイラが
Cのソースを吐いてくれるそうなので、
そっちをいじれば何とかなるかなと思っている。
501:デフォルトの名無しさん
07/09/03 22:16:45
ACL は Express エディションならフリー。
ヒープ制限があるので大規模な処理は無理だが。
KCL は GNU に寄贈されてメンテナがかわりにかわって GCL (GNU Common Lisp)という
名前になってる。派生した ECL ってものある。
つうかソケットで通信とかなら C のソースがうんぬんは不要だと思うけど…。
502:デフォルトの名無しさん
07/09/03 22:33:05
Lispworksを日本で購入できる場所ないのかな?
503:500
07/09/03 22:47:13
>501
ACLのExpress editionはは使ってみようとしたんだが
なぜか私のデスクトッブにはダウンロード出来なかった。
試しに古いノートPCにやってみたらできたので
どうもIE7が邪魔してるような気がする。
GUIモジュールとの通信はソケットとかじゃなくて
単純に呼び出し時の引数渡しみたい。
まだ良く調べてないが。
504:デフォルトの名無しさん
07/09/03 23:07:59
>>503
フーム…ちなみに C と Lisp の経験はそれぞれどれくらい?
あと、まずその GUI モジュールとやらについて一通り勉強するのが先だと思う。
今の状態だと、たとえば Lisp じゃなくて Python で~ってケースでも
どこから手をつけていいかわかんない状態でしょ?まず、ターゲットをよく知らないとね。
大抵の C のライブラリは当然 C の関数呼び出し形式のインターフェースしかない。
他のシステム(Lisp に限らないよ。ネットワークのむこうの C のプログラムとかね)と繋ぐなら、通信部分は自分で作ることになる。
505:491
07/09/03 23:10:52
あ、
「既存のGUIと通信を行うモジュール」と言うのは
GUI及びLAN経由で他のPCと通信する機能を
兼ね備えたモジュールがあってそこから
計算エンジンが呼び出される構成って事。
書き方が紛らわしかったね。
506:503
07/09/03 23:42:18
>504
お察しの通りCでも大きなブログラムを一から書いた事は無い。
せいぜい教科書の演習問題レベルか他人の書いたブログラムを
ちょっと変更したくらい。Lispの経験はほとんどゼロ。
そんなレベルで難しい事をやろうとするなと言われそうだが
まあ、趣味でやってる事なので。
まずはLispで書いたソースをコンパイルして
他のEXEから呼び出す事が可能なモジュールを
作れるかどうかを知りたかったのよ。
507:デフォルトの名無しさん
07/09/04 00:04:43
共有ライブラリを生成できる処理系はいくつかある。
有償なら ACL, LispWorks、無償なら ECL (GCL もできるのかな?使ったことないから知らん) あたりで可能。
Windows で使えるかは知らないけど。あと、この機能を使うにゃー C に加えて Lisp の知識も要求される。
つうわけで、技術的には可能だが、たぶんあなたの期待してるようなものじゃない。
残念ながら今の Lisp の世界では「Lisp から C のライブラリを呼び出す」のが一般的なんだよねぇ。
Foreign Function Interface といって、C のライブラリを Lisp から呼び出す機能。
ECL みたいに C のプログラムに埋め込んじゃえるタイプのもあるが、これをやるにも C と Lisp 両方の
知識が要求される。逆に知識があれば VB に埋め込んだりもできる:
URLリンク(www.cs.stevens.edu)
とりあえず C か Lisp、どっちかはマスターしよう。Lisp ならこのスレで力になるよ。
508:491
07/09/04 00:17:44
結局のところ、Lispの関数を呼び出す時のパラメータ形式と
(多分)Cが関数呼び出しする時のパラメータ形式を変換する
小さなモジュールを作って間に挟めばこの目的にはOKって事かな?
そうすればLispコンパイラが吐き出すCのソースはいじらなくても、
objの方をリンカーにかけてexe化するだけで良いのかな、多分。
509:デフォルトの名無しさん
07/09/04 00:48:16
うーん、まず Lisp の側からつっこむとね、まず貴方はデザイン上の撰択をしないといけない。
ECL を使うと仮定すると次のような方法がある。
1. GUI ライブラリが DLL として提供されているなら FFI 経由で Lisp から使う
(この場合、コンパイラの出力をいじるとかは必要ない)
2. GUI ライブラリの機能をラップして DLL にして Lisp から使う
3. GUI ライブラリをソケットとか別プロセスから操作できるようにしたてて、Lisp からはそのインターフェースで操作する
4. ECL の機能をラップした DLL を作成して、それを C プログラムにロードして使う
4. しか眼中にないようだが、それは要求されるスキルも高く、かつあんまり楽じゃない。たとえば、Lisp の知識がないと
あるオブジェクトを管理しているのは Lisp の領域なのか C の領域なのか区別をつけることすら難しい(…と思うけど、どう?)。
あとは、C をはじめたばかりのようなので、プログラムといえばコンパイラでコンパイルして exe か dll にしたもの、
というイメージがあるんだろう。ECL で「コンパイルする」というと確かにネイティブコードを生成するが、それは
exe でも dll でもないんだ。(まぁ、実行形式や共有ライブラリも生成できるけど…)
> (compile-file "foo.lisp") ;; gcc でコンパイルしてネイティブコードを含む .fas ファイルを作成
foo.fas
> (load "foo.fas") ;; .fas をロード
510:508
07/09/04 00:52:52
>507
そうですか、上で書いたような安直な方法は多分使えないと。どうしようかなー?
Lispから呼び出せるGUI&通信モジュールを自作するのは多分もっと大変だし。
あまり大変ならLispでエンジン書くのを諦めるしか無いかな?
最後にひとつだけ質問。
(商用Lispの付加機能じゃなく)一般的なLispシステムのコンパイラが吐く
objはそれ単体では自立したモジュール(exeやdll)には出来ないって事ですよね。
ガーベッジコレクションとかが欠けてるし。
511:510
07/09/04 01:15:26
>509
ちなみに私が使おうと考えていたGUIは
ライブラリ形式ではなくて一固まりのモジュール(.exe)なのです。
それがdllを介してあるいは直接にエンジンを呼ぶ形式。
なのでこちらからは呼べなくて呼び出される一方なのです。
512:デフォルトの名無しさん
07/09/04 01:33:31
まぁ、まず Lisp を勉強しようや…。C とは違う部分もあるんだから。
実行形式には「できる」。ただ、C のランタイムは libc や mcsvcrt としてシステムに既に存在している場合が多いけど、
Lisp のランタイムは普通のシステムには存在しないので配布物に含むことになる。
商用 Lisp はこの時に、コンパイラ機能とか配布物に要らないだろうという機能を削ったりできる。
CLISP で作成した .exe := ランタイム数メガ + プログラム部分 => 数メガ
ECL で作成した .exe := プログラムサイズ + libecl.dll (4Mくらい?)
SBCL とかはネイティブコードコンパイラを備えているため、ラインタイムとコアイメージはでかい。
10M を余裕で超える。C でいったら GCC がまるごとついてくるようなもんだからね。
513:デフォルトの名無しさん
07/09/04 01:40:48
>>510
ふーんけったいなライブラリ(って言うの?)だね。いわゆるプラグイン形式って感じかなぁ。
すると DLL を与えるしか方法がない感じなのかな?
しかもインターフェース固定か。勘でいってるけど、あんまり Lisp のインクリメンタルな開発を活かす機会はなさそうかなぁ。
外からいじれるようにしたりして嬉しい?
直接エンジンを呼ぶってのはよくわからないな。見てみないとよくわからんね。非公開のやつなの?
514:510
07/09/04 02:17:24
>512
実行形式にはできるんですね。
そりゃそうか、Basicでも出来たもんなあ。
配布イメージがでかくなるのは別に構いません。
>513
そうなんですよね。
良く考えたら既成のGUIモジュールから呼べるように
毎回コンパイルしてたらインクリメンタルな開発手法が
使えなくてLispを用いる意味があまりなくなりますね。
デバック用途のためのみであっても
GUIと通信モジュールは自作するしかないか?
で、最後に可能なら既存のリッパなGUIから呼べるように細工すると。
いや、いろいろ教えて頂いて有り難うございます。
515:デフォルトの名無しさん
07/09/04 11:52:52
>>514
図表を扱う向きではないけどTKでよければwindowインターフェースはある。
リアルタイムに何か表示するならOpenGLのインターフェースもある。
なのでこれらで間に合う範囲ならそれ程困らないが、ポトペタなウィンドウモジュールが欲しいとなると
商用のを買わないとダメポ。
516:デフォルトの名無しさん
07/09/04 14:07:03
Common Lispで書いたプログラムを起動してそれとソケットで通信するものを
DLLとして作成するというのはどうかな。
DLLの関数はそのプログラムにお伺いを立てて下されたお答をそのまま返す。
517:デフォルトの名無しさん
07/09/04 15:13:18
CLでDLL作れるの?
518:514
07/09/04 19:55:45
>516
それグッドアイデアですね。
そのやり方ならコンパイル前(Lisp処理系から起動)でも
コンパイル後(GUIから呼び出されて起動)でも
最悪DLLさえ作り分ければ、きっとうまく行きそうな気がします。
その方針でやってみる事にします。
皆さん、いろいろ有り難うございました。
Lisp絡みで分からない事が出て来たら
質問させて頂きたいので、
その時はまたよろしくお願いします。
519:デフォルトの名無しさん
07/09/06 23:16:38
GoogleからLisp VMとOSが無料配布されるという夢を見た。
520:デフォルトの名無しさん
07/09/07 02:04:10
lispなシェルって無いの?
> (echo "hoge")
hoge
みたいな奴
521:デフォルトの名無しさん
07/09/07 02:16:25
>>520
MonaOSにSchemeなシェルがある
522:デフォルトの名無しさん
07/09/07 02:16:45
>>520
URLリンク(clisp.cons.org)
523:デフォルトの名無しさん
07/09/07 02:24:15
>>520
URLリンク(www.scsh.net)
524:デフォルトの名無しさん
07/09/07 05:29:54
俺なんかGoogleがLispマシン作ってただみたいな値段で売り出す夢見た。\(^O^)/
525:デフォルトの名無しさん
07/09/07 05:42:02
アフリカ起源のLispは猿が二股の木を組み合わせてやってたもので、
エバル猿が仕切ってる、ってなんかで読んだのですが
GoogleがLispマシンで世界制覇したのち猿の惑星になるのかもしれないな\(^o^)/
何言ってんだ俺w寝よ…
526:デフォルトの名無しさん
07/09/07 09:48:38
てか、おまいらそろいも揃って中村正三郎かよ!って顔文字使ってやがるな(w
527:デフォルトの名無しさん
07/09/07 10:59:52
\(λ ^o^)/
528:デフォルトの名無しさん
07/09/07 12:51:50
/(^λ^)\
529:デフォルトの名無しさん
07/09/07 13:52:10
Goolips作ろうぜ
530:デフォルトの名無しさん
07/09/07 16:01:44
Googlispとは…
↓
531:デフォルトの名無しさん
07/09/07 16:03:33
(google '(googlisp))
532:デフォルトの名無しさん
07/09/07 20:27:51
しかし実装はPythonだ(藁)
533:デフォルトの名無しさん
07/09/08 13:18:18
(OTZ =3 >>532)
534:デフォルトの名無しさん
07/09/08 16:25:12
(cons "人生" "オワタ")
=> \(^o^)/
535:デフォルトの名無しさん
07/09/17 15:12:01
Lisperの諸君もどってきてくださk><
536:デフォルトの名無しさん
07/09/17 15:14:34
ちょっくら Haskell してくるε≡≡ヘ( ´∀`)ノ
537:デフォルトの名無しさん
07/09/17 21:05:05
>>535
near the you.
538:デフォルトの名無しさん
07/09/18 00:32:41
WindowsでScheme用のエディタにEmacs使いたいんだけどよくわからむ。
Gaucheの解説サイトの.emacsそのまま作ったんだけど、LispboxについてたEmacsじゃ駄目なのかな。
539:デフォルトの名無しさん
07/09/18 02:54:42
どこがどうわからんのか説明できる程度までは自分で調べてくれんか
540:デフォルトの名無しさん
07/09/18 04:18:48
scheme の話題はこっちで。
スレリンク(tech板)
541:538
07/09/18 12:50:38
スレ違いごめん。
542:デフォルトの名無しさん
07/09/18 22:49:22
>>538
いやいやお若いの。このスレに立ちよったのも何かの縁。
Common Lisp も学んでいっちゃぁどうだね?
543:デフォルトの名無しさん
07/09/18 23:36:14
come on lisp
544:デフォルトの名無しさん
07/09/18 23:49:07
寒いオヤジギャクを思いついても、書き込まないほうがいいと思うんだな
545:デフォルトの名無しさん
07/09/19 00:29:32
オヤジしかいないんだから、別にいいと思うが
546:デフォルトの名無しさん
07/09/19 00:38:11
>538みてーに偶に迷い込む若ぇ奴が近寄らなくなるぢゃねーか!
547:デフォルトの名無しさん
07/09/19 00:46:07
>>543
その発想は無かったw
ちょっと笑ってしまった俺もオヤジの仲間入りか…
548:デフォルトの名無しさん
07/09/19 00:58:39
>>543
【審議中】
|∧∧| (( ) ) (( ) ) ((⌒ )
__(;゚Д゚)___ (( ) ) (( ⌒ ) (( ) )
|⊂l l⊃ | ノ火.,、 ノ人., 、 ノ人.,、
 ̄ ̄|.|. .|| ̄ ̄ γノ)::) γノ)::) γノ)::)
|.|=.=.|| ゝ人ノ ゝ火ノ ゝ人ノ
|∪∪| || ∧,,∧ || ∧,,∧ || ボォオ
| | ∧ (´・ω・) (・ω・`) ∧∧
| | ( ´・ω) U) ( つと ノ(ω・` )
~~~~~~~~ | U ( ´・) (・` ). .と ノ
u-u ( ) ( ノ u-u
`u-u'. `u-u'
549:デフォルトの名無しさん
07/09/19 01:04:34
まあありだろ
550:デフォルトの名無しさん
07/09/19 01:26:54
何でもありが Common Lisp の美点だべさ
551:538
07/09/19 02:42:51
そんな若くないけど、優しいお言葉ありがとうですお
SICPとアセンブラの本を読み終わったらLISPやるつもりですお
バスコン初心者なので両方いっぺんは無理ですお
今後の予定
絶版の湯浅さんの本を押さえてあるのでそれやったら
グレアムの本2冊買うつもりですお
ここまで行けるかはかなり謎ですがおw
今は他の勉強する気ないんですがネットワーク管理任されそうですお
素人なんでそっちも勉強しなくてはならんのですお( ;^ω^)
552:デフォルトの名無しさん
07/09/19 03:52:45
>>543
ナイスボケ
553:デフォルトの名無しさん
07/09/19 07:08:07
lispっておっさんの言語なの?
554:デフォルトの名無しさん
07/09/19 08:00:05
543 をはじめとするおっさんどもが要るだけだろう
俺はヒキコモリ高校生
555:デフォルトの名無しさん
07/09/19 08:14:02
必要なのか
556:デフォルトの名無しさん
07/09/19 11:12:47
以前から不思議だったんだけど2chのスレってどんな過疎スレでも「ハゲ」と「おっさん」話が持ち上がると妙にスレが伸びるんだろう?
557:デフォルトの名無しさん
07/09/19 12:37:58
それはry
558:デフォルトの名無しさん
07/09/19 15:21:46
>>556
2chに出入りしている腐女子は「ハゲ」×「おっさん」と
「おっさん」×「ハゲ」のどっちが良いかでご飯3杯いけるから。
因みに数字板ではこれがマジだから困る。
559:デフォルトの名無しさん
07/09/19 23:43:01
イケメン禿のおっさんがLISPとは何かを語ると
腐女子がえびぞりながら泡吹いて失神するぞ。
クワトロのせりふで決めればもう涎流しっぱなしで再
560:デフォルトの名無しさん
07/09/20 01:05:39
>>556
そういう言葉で煽るのは、自分はそれらのキーワードと無縁だと思ってる層で、
そういう層は大抵若い世代、言い換えれば、経験とか知識に乏しいまま全能感だけ持て余してる世代。
つまり、そういう話が持ち上がると伸びるのではなく、アホなことでスレ伸ばす層が持ち出しがちな単語が
そういうものなんでは。
561:デフォルトの名無しさん
07/09/20 04:33:26
どなたかお助けください。
sbcl,clispでキーボード操作を受け付けるプログラム書いてあそんでいるのですが双方で共通にttyの設定をraw,noecho似する方法はありませんでしょうか?
現在clispでは(shell "stty raw -echo")を,sbclだと実行前に同様のコマンドを実行しています。
ただこれだとclispはreadlineがカーソルキーを食ったままですし、sbclは抜けないと元に戻せなくて困っています。
562:デフォルトの名無しさん
07/09/20 07:50:19
CLISP なら SCREEN パッケージも入ってると思うけど。
あとは EXT:WITH-KEYBOARD とかでCUI できる。
SBCL と共通にしたいなら ncurses を使うのがいいんじゃないかな。
563:デフォルトの名無しさん
07/09/20 11:54:18
>>562
ありがとうございます、ncursesで検索したらcl-cursesとかcl-curl(cURLじゃないんですね)とかいろいろ出てきました。
564:デフォルトの名無しさん
07/09/21 11:04:13
最近cgiをLispで書くのがマイブームです><
565:デフォルトの名無しさん
07/09/21 11:18:53
それたのしそうですね><
どうやるんですか><
566:デフォルトの名無しさん
07/09/21 23:01:52
ViaWebでさえサーバープロセスが動いていたのに
何でCGIで書くのかと問い(ry
567:デフォルトの名無しさん
07/09/21 23:02:53
普通にかけますよ
clispなら小さいからプロセス起動なcgiでもいけますし、sbclならfastcgi使うとごっつはぇぇでし。
568:デフォルトの名無しさん
07/09/21 23:07:01
>>566
cgiつーのは割と身近で小さめの実用プログラムな側面があるのでそういう否定のしかたはよろしくないような気がする。
569:デフォルトの名無しさん
07/09/22 00:46:01
結局のところお前らCLispで実際に使えるプログラムかいてないのか?
570:デフォルトの名無しさん
07/09/22 01:07:35
エディタのスクリプトならバリバリ……
571:デフォルトの名無しさん
07/09/22 07:52:21
プロトタイプ作成とかデータ整理とか表には出せないが使ってるよ。
でも上にはプロトタイプ専用の「ゲテモノ」と認識されてるんでね、テストまでしか使えない。
人月単位の人海戦術で作るとな……プロトタイプのほうが高速かつ高機能とかマジ泣ける…
仕様通りちゃんと動いたとしても、結局素人を集めて人海戦術で作らないと安心できない、それぎゃ現実の仕事。
でもテスト用のプロトタイプがあるだけでもマシなほうさ。バリバリのウォーターフォールでデスマーチ化ってとこ多いしね。
…なんか愚痴っぽくなったな、スマン。
572:デフォルトの名無しさん
07/09/22 08:03:45
おれ、グーグルに入れたら「ウォーターフォール」卒業して
先端技術でバリバリ働くんだ。
573:デフォルトの名無しさん
07/09/22 10:20:25
>>571
速くHackerがたくさんいる企業に就職しなおすんだ!
574:デフォルトの名無しさん
07/09/23 12:49:17
(setf test-list
'(("above" . "上記の,方向,場所などを表して.")
("propose" . "提案する")
("afforded" . "余裕がある,can, could, be able toを伴って")
("dedicated" . "専用の")))
見たいなりスト作って評価したら
Coding system iso-lating-1-unix not suitable for "000c4e(:emacs-rex (swank:interactive-eval))
見たいなエラーがでるんだがCLispってUTF-8対応じゃないの?
575:デフォルトの名無しさん
07/09/23 13:55:37
glibc か libiconv サポートがある環境なら UTF-8 のエンコーディングは備わってると思うよ。
SLIME (emacs) <---> SWANK (lisp) の通信設定がデフォルトの値 iso-lating-1-unix なんじゃないかな。
iso-lating-1-unix なストリームに utf-8 の文字流し込んでエラーになってるんだと思う。
;; SLIME 側の設定 (Emacs)
(setq slime-net-coding-system 'utf-8-unix)
;; SWANK 側の設定 (CLISP)
(setq swank::*coding-system* "utf-8-unix")
576:デフォルトの名無しさん
07/09/23 17:06:26
>>575
できました!
ありがとうございます
577:デフォルトの名無しさん
07/09/24 16:11:21
>>571
ナカーマ w
578:デフォルトの名無しさん
07/09/29 17:34:40
相異なる要素からなる系列 seq の要素中 2 個を選んだ組合せをすべて表示し場合の数も表示する関数 (pair seq) で,例えば (pair abcd) が
(A B) ; A を選び,残りの B,C,D から B を選んだ組合せ
(A C) ; A を選び,残りの B,C,D から C を選んだ組合せ
(A D) ; A を選び,残りの B,C,D から D を選んだ組合せ
(B C) ; B を選び,残りの C,D から C を選んだ組合せ
(B D) ; B を選び,残りの C,D から D を選んだ組合せ
(C D) ; C を選び,残りの D から D を選んだ組合せ
6 ; 場合の数 4C2=4!/{2!×(4-2)!}=6
のように評価されるものを,必要なら関数 app を用いて定義せよ。
(defun merg (seq1 seq2)
(if (null seq1)
seq2
(cons (car seq1)
(merg (cdr seq1) seq2))))
(defun app1 (seq elem)
(merg seq (cons elem NIL)))
このプログラムを教えてください
579:デフォルトの名無しさん
07/09/30 00:54:33
宿題ならちっとは考えたフリしろよw
もしくは宿題スレへ(lisperがいるかどうかは知らんが、lisp以前の問題だ)
580:デフォルトの名無しさん
07/09/30 03:05:54
>>578
もちろん教えてあげますよ。
ただ、宿題を持ち込む人は多いんだけど情報不足なんだよね。
1. 締切はいつまで?どんなレベルの解答がお望み?
2. Lisp の授業ははじまってどれくらい?一ヶ月?三ヶ月?
3. 教科書はなにで、どれくらいまで読んだ?
4. ズバリ答えがほしいの?教育的ヒントがほしい?
別にズバリ答えがほしいならそれで即解答しますんで、正直に答えてね。
581:デフォルトの名無しさん
07/09/30 09:53:44
>>580
正直ズバリ答えてほしいのが本音ですが・・・
ヒントだけでも良いです。
締め切りは明日で、Lispは半年程やってます。教科書はありません。
582:デフォルトの名無しさん
07/09/30 12:55:52
教科書がないって、困ったな。HyperSpec とか読んでる?
指標がないと、どーかげばいいのかこっちも悩むじゃねーか。
たとえば、下のコードで何かわからない点はある?
(defun pair (seq)
(loop with counter = 0
for lst on seq
for e1 = (car lst)
do (dolist (e2 (cdr lst))
(format t "(~A ~A)~%" e1 e2)
(incf counter))
finally (format t "~D~%" counter)))
583:デフォルトの名無しさん
07/09/30 13:19:14
たぶん再帰で書いてほしいんだと思った
584:デフォルトの名無しさん
07/09/30 13:34:09
フーン。じゃあこうか?
(defun pair2 (seq)
(labels ((rec (x xs n)
(if (null x)
n
(let ((n (rec2 x (car xs) (cdr xs) n)))
(rec (car xs) (cdr xs) n))))
(rec2 (e x xs n)
(if (null x)
n
(progn
(format t "(~A ~A)~%" e x)
(rec2 e (car xs) (cdr xs) (1+ n))))))
(format t "~D~%" (rec (car seq) (cdr seq) 0))))
ブツブツ。ほんと世の中 Scheme に毒され過ぎだぜ…。過度の一般化じゃないか?
そりゃ再帰のほうが一般的なのはわかるが、特殊なケースのほうが記述が短い場合に反復を使うのを恐れるべきじゃない。
なんだったら LOOP や DOLIST が再帰で実装されていると思えばいいんじゃないか?
585:デフォルトの名無しさん
07/09/30 13:35:14
すまん、インデントがメチャクチャになっちゃった orz
586:デフォルトの名無しさん
07/09/30 13:50:45
まあ普通はループで書くと思うけどね。宿題だから再帰するのかなと。
587:デフォルトの名無しさん
07/09/30 13:53:05
本題から外れるが、
>>584
>>反復を使うのを恐れるべきじゃない。
禿同。再帰を使うだけで問題の本質は露わになる、わけじゃない。
時と場合を選べば、LOOP最強。
588:デフォルトの名無しさん
07/09/30 14:22:06
>>584
> なんだったら LOOP や DOLIST が再帰で実装されていると思えばいいんじゃないか?
よくない。再帰で実装されてると想定して、たとえば
(let (r) (dolist (x '(a b c) (mapcar #'funcall r)) (push #'(lambda () x) r)))
=> (C B A)
となることを期待すると実装依存になってしまう。
589:デフォルトの名無しさん
07/09/30 14:50:13
loop って末尾再帰とは限らないんだっけ?
590:デフォルトの名無しさん
07/09/30 15:02:38
>>582
>>584
わからないとこ多いですね↓
loopとかforとか習ってません
関数の定義、分岐(if とかcond)
リスト(list car) データのリンク(cons)
とかですね。習ったのは。すいません
もうすこし自分で考えてみようと思います
591:デフォルトの名無しさん
07/09/30 15:27:23
>>588
わざわざできない例をもってくるなよ…。
その例だと束縛をキャプチャしてるけど、その束縛を DOLIST が書きかえるんだからおかしいのは当然だろ。
束縛のキャプチャは CL じゃあ常識なんだから、CL の人はそんな事しないし気をつけるもんなんだよ。
Scheme かぶれはなんでもかんでも Scheme で考えるからハマるんだろう。
この例に限定しているつもりだったが、もちろん一般的には CL では再帰で実装されていると考えてはいけない。
俺の書き方に問題があったのは認める。普通 CL な人は IF と GOTO による実装をイメージする(macroexpand すれば一目瞭然)。
>>589
というか CL の DO* や LOOP は基本的に GOTO と IF で実装されてるから、ほぼ確実に再帰じゃない。
俺は再帰で実装している処理系を見たことがない。
>>590
やっぱり Scheme 風味な授業なんだな。じゃあ 584 のほうを提出したまえ。
592:デフォルトの名無しさん
07/09/30 15:39:20
CL から見れば 588 の例なんかは
for(i=0;i<n;i++){list.push_back(&i);}
ってやって、あとで i のポインタの先の値をみて文句を言うのと同じようなダメさを感じるわけ。
再帰でしか物を考えられない Schemer は、CL を使うときはもっと考えを切りかえてからきてくれ。
Scheme は良いものだが、だからといって他のすべてのその思想を押しつけることなどできないのだ。
身近だから CL を煽りにくるんだろうけどさ……所詮どっちもマイナーな世界だ。お互いを尊重して仲良くいこうや。
593:デフォルトの名無しさん
07/09/30 16:08:10
Schemer だって再帰を多用するわけじゃないでしょ
Shiro さんも言っていたけど fold や map、for-each や srfi-42 などのユーティリティを多用するのがスタイル
loop 的なものはあんまり使わないと思うけどね
594:デフォルトの名無しさん
07/09/30 16:15:30
>>591
(format t
とか??なんですが
595:デフォルトの名無しさん
07/09/30 16:55:32
>>594
おれは>>584じゃないけど、おまい授業出てないだろ。
format t は printf STDOUT みたいなもんだよ。~% はタダの改行。
596:デフォルトの名無しさん
07/09/30 17:00:33
授業に出てるなら、こんなとこで質問する必要はないのでは?
597:デフォルトの名無しさん
07/09/30 17:19:39
宿題を張った奴にここまで優しいのはこのスレくらいじゃね?
598:デフォルトの名無しさん
07/09/30 17:59:27
宿題にはもっと妙な答えを教えてあげようよ。
今回のだったら tagbody と go で書くとか。
599:デフォルトの名無しさん
07/09/30 19:15:23
Scheme の srfi-42 を使って書いてほしいんです><
600:デフォルトの名無しさん
07/09/30 19:16:58
>>599
そりはすれち
601:デフォルトの名無しさん
07/09/30 21:33:06
>>599 Gauche でやってみたよ
(use srfi-42)
(define (pair seq)
(let1 counter 0
(do-ec (: xs seq) (: ys (cdr (member xs seq)))
(begin
(format #t "(~s ~s)~%" xs ys)
(inc! counter)))
(format #t "~d~%" counter)))
gosh> (pair '(a b c d))
(a b)
(a c)
(a d)
(b c)
(b d)
(c d)
6
>>600 スレちがいゴメン
602:デフォルトの名無しさん
07/09/30 22:43:18
>>601
うほ! ありがとございます!
srfi-42 ムズカシイんです><
Gauche のマニュアルだけでは良くわかりませんでした><
サンプルがいっぱいのってるチュートリアルみたいなものがどっかにあれば、、、
スレ違いスミマセン
603:デフォルトの名無しさん
07/10/01 00:27:06
>>594
出力につかっていいの関数は何?使ってる処理系は何?
最初に聞いた質問にはちゃんと意味があって、こーゆう状況を防ぐために教科書や処理系を聞いてたんだよね。
大抵の環境なら (print (list a b)) と (print counter) にすれば動くと思うけれど。
>>598
そんなコードを見せても意味があるとは思えない。
俺はこの質問者もひょっとしたらモノになるんじゃないかと期待をしているのだよ。
604:デフォルトの名無しさん
07/10/02 00:02:57
>>584
labelsやletやformatを使わないでかけますか?printコマンドは知ってます
605:デフォルトの名無しさん
07/10/02 01:08:09
任意の型のデータxを第一引数、cons型のデータのリストdを第2引数として取り、dの要素のうちで、そのfirst部分がxに一致する(ただし比較はequal()で行うものとする)ものがあればそのような要素の最初のものを返し、さも無ければnilをかえす関数assoc_equ()を定義せよ
この問題できないんですけどどなたかできませんか?よろしくお願いします><
606:デフォルトの名無しさん
07/10/02 01:16:13
>>605
(defun assoc_equ (x d)
(assoc x d :test #'equal))
607:デフォルトの名無しさん
07/10/02 02:14:08
できました!ありがとうございます!!!
書き方がまだ習ってない技法なので、もっと簡単に書き換えるとどんなのになるのでしょうか?
よろしかったら教えていただけませんか?
ループなどでもできると聞いたので。。。
608:デフォルトの名無しさん
07/10/02 02:20:35
その昔、テーラー展開の式が書いてあってこれを証明せよって問題があった。
で、その回答に「テーラー展開より」って書いたやつがいたのを思い出した。
609:デフォルトの名無しさん
07/10/02 02:27:10
コーモンリップス
610:デフォルトの名無しさん
07/10/02 02:38:30
>>609
夜中にそんなこと言ってるからおまえは駄目なんだよ
611:デフォルトの名無しさん
07/10/02 03:04:53
(´・ω・`)こ、こーもん・・・
612:デフォルトの名無しさん
07/10/02 22:22:06
>>607
半年で let がでてこないのはすごいなぁ。
書いてもいいけど、もう締切は過ぎたんじゃないの?
ループによる解答は 582 で出てるよ。
613:デフォルトの名無しさん
07/10/03 05:12:01
ある情報を処理するアプリケーションをC言語で書きました。
で、そのアプリケーションは処理結果としてdouble型の数値を3つ結果として出力します。
ここからが質問なのですが、
ウェブサーバを立ち上げて、クライアントが情報を入力すると、このアプリケーションが処理して
処理結果の数値をデーターベースに格納出来るようにしたいんです。
この用途にKahuaは使えるのでしょうか?
もしくはコレが出来るライブラリみたいな物は有りますでしょうか?
614:デフォルトの名無しさん
07/10/03 12:28:35
>>613
そのアプリケーションをあなたが書いた物と仮定する。
やりたいことは可能だが、意味のある事じゃない。
むしろ元アプリケーションをfastcgiライブラリを使うように少し修正してmod_fastcgiを使うか
shellでcgiを書いて受け渡す方が楽だろう。
615:デフォルトの名無しさん
07/10/03 22:17:49
>>614
意味がないとまで断定するこたぁないと思うが。
AllegroServe で R と連携する例。
URLリンク(cl-www.msi.co.jp)
616:デフォルトの名無しさん
07/10/03 23:14:32
>>615
元コードがCで書かれていて、さらにKahua上から制御できるかいと聴かれているのだから意味が薄いって事なんだよ。
しかもあなたの提示はAllegroServeじゃないか。
そりゃ元コードがCommonLispだったら楽しそうだし、もしも元コードがSchemeで書かれていればKahuaでの実装に美しさを感じるだろうことは否定しないんだけど。
ちなみに僕のおすすめはFastCGIでLisp実装っていうもっと尖っているけどApacheあたりと仲良くモードです。
617:デフォルトの名無しさん
07/10/03 23:38:40
ヒント: ここは Common Lisp 入門スレ
Kahua でも AllegroServe でも別にいいんじゃね?
標準入出力/パイプ/ソケットで制御するなら別にどっちでもかわらんだろう、と思って R をごにょごにょする例を紹介したのだが。
618:デフォルトの名無しさん
07/10/03 23:51:05
いいじゃん、「意味」なくても。
>>613 の要件ってLisperが気にするほど効率要求されてないと思う。
だとしたら、せいぜい AllegroServe+FFIとか、gauche からCを呼びだす方法とか
(おれはkahua知らないけど)、軽く面白そうな選択肢を教えてあげりゃいいんじゃね?
619:デフォルトの名無しさん
07/10/03 23:52:08
>>617
いや、CommonLispスレに元CコードをKahuaとまぜこぜ可能かって聴かれたからこそあの回答なんですけど orz
そりゃ僕だって全部CommonLispでってのはスレ的に正しいとは思うけどあんまりなんじゃないかい?
なんとなく質問した奴の状況が感じられる状況と似た境遇にあった俺が2ch的にあまちゃんなんだろうけどさ。
620:デフォルトの名無しさん
07/10/04 00:12:13
「元CコードをKahuaをまぜこぜ可能か」って質問だったの?
「アプリケーションをC言語で書きました。」だからスタンドアロンな実行バイナリをイメージしてたよ。
んで >>615 を紹介したわけ。別に Kahua でもいいかなーと。run-program で起動して結果をうけとるでもいいんじゃねーと。
あくまで外部コマンド + Lispサーバで、「全部CommonLisp」とか書いたつもりはないけど…。
621:デフォルトの名無しさん
07/10/04 00:24:45
>>620
あー、今夜の僕は読解力ないかも(週も半ばなのに大分呑んだし)
僕が解釈したのは元の計算コードをCで記述済みでウェブサーバにKahuaを使った場合にそのCコードの産物とどうやってやりとりしたらいいの?
って事だったんで、そこまで境界がきれいにわかれてるならLispに拘らない方がいいのじゃないのっていうスレ的には正反対の結論がでちゃったんだ。
;;;うーむ、今受験の引っかけ問題や詐欺師がきたら死ねるなぁ。
622:デフォルトの名無しさん
07/10/07 18:49:58
(setq abcd (list 'A 'B 'C 'D))
(defun merg (seq1 seq2)
(if (null seq1)
seq2
(cons (car seq1)
(merg (cdr seq1) seq2))))
(defun app (seq elem)
(merg seq (cons elem NIL)))
(defun comb (seq)
(defun ith (que i)
(if (= i 1)
(car que)
(ith (cdr que) (- i 1))))
(defun lp (tmp i n)
(print (app (list (car tmp)) (ith tmp i)))
(cond ((null (ith tmp 3)) n)
((null (ith tmp (+ i 1)))
(lp (cdr tmp) 2 (+ n 1)))
(T (lp tmp (+ i 1) (+ n 1)))))
(lp seq 2 1))
の関数combを変更して
相異なる要素からなる系列 seq の要素中 num 個(num: 系列長以下の非負整数)を選んだ組合せをすべて表示し場合の数も表示する
関数 (comb seq num) を作る問題を教えてください
623:デフォルトの名無しさん
07/10/07 18:51:10
たとえば(comb abcd 3)の評価は
(A B C)
(A B D)
(A C D)
(B C D)
4
のようになります。(comb abcd 0) は
1
と評価されます
624:デフォルトの名無しさん
07/10/07 19:11:17
>>622
宿題かい?
宿題だと仮定して、ここで答を聴いてしまうと、君は次の宿題もここか他で答を探す羽目になるんじゃないのかい?
だとすれば、君がなすべき事はその宿題のどこがわからないかを表明して助けを乞う事であって解を求める事じゃないのではないの?
宿題じゃないならごめんな。
625:デフォルトの名無しさん
07/10/07 19:18:18
>>624
宿題です。
(A B C D)
ってあったらまずAをチョイスしてnum個のリストになるまでリストに要素を追加していくやり方を考えているんですがうまくかけないんです
626:デフォルトの名無しさん
07/10/07 22:03:55
>>622
あのさー >>578 で全く同じ宿題がでてるんだけど。締切は 9/31 までだったんじゃねーの?
>>578 がウソつき野郎だったのかループを狙ってるのか……。たぶん君も前の彼も大学生なんだよな?
宿題の丸投げくらいはちゃんとできるようになろうよ?エスパー募集ばっかしてたら社会でやっていけないよ。
どんな関数使っていいのかとか、環境とか、締切とか、宿題丸投げするなら最低でもそのへんは書こうよ。
前の彼も後で「format知りません」「let も使わないでください」とかいいだすし。
627:デフォルトの名無しさん
07/10/07 22:10:20
いや、問題はちょっとややこしくなってるぞ。
たぶん >>578 の続編だろう
628:デフォルトの名無しさん
07/10/07 23:24:28
だからー、宿題に丸まる答えてあげるのやめなよ。
せいぜいヒントを出すとか、「こういう風に考えてやってみたけどうまく行きません、
どこがまちがってるのでしょうか?」と言う質問にだけ答えるとか。
丸まる答えたらますます自分で考える気を無くすよ、多分。
629:622
07/10/07 23:30:44
再帰的に(A B C D)のリストからまず先頭Aで
numが0になるまで
Aをとって(A)というリストをつくる。numを1つ減らす
Bをとって(A B)というリストをつくる。
・・・
みたいに考えたんですが(A) (A B) というリストをうまく保持しておけません。
630:デフォルトの名無しさん
07/10/07 23:35:30
>>628
こんな所に質問しにくる馬鹿が今後どんな人生を歩もうと、そんなことどうでもいい
631:デフォルトの名無しさん
07/10/07 23:47:49
出題者のレベルもアレな感じがするのは気のせいか
632:デフォルトの名無しさん
07/10/07 23:52:47
>>631
そうですね
633:デフォルトの名無しさん
07/10/08 00:02:15
>>628
最初にそう聞いてくる奴ならそう答えるさ。だがちゃんと丸投げですと宣言したならズバリ答えを解答しちゃうよ。
もし本当にやる気があるなら、ズバリの答えでもちゃんと見て考えるさ。見とり稽古みたいにね。
全体図と筋道を見せてからゆっくり詳細を解析したいって人もいるかもしれない。
やる気がない人をむりやりやらせるなんてのは非生産的。
634:622
07/10/08 00:03:38
>>633
やる気はあります!
635:デフォルトの名無しさん
07/10/08 00:43:23
そうか。んじゃ使ってる Common Lisp 処理系で次を見てみよう。
(loop for l on lst ;; '(A B C D) => '(B C D) => '(C D) => '(D) => NIL
for e = (car l) ;; A => B
for l2 = (cdr l) ;; '(B C D) => '(C D)
do (print l)
(print e)
(print l2))
636:デフォルトの名無しさん
07/10/08 06:21:28
やる気があるのなら教官に聞けよ
637:デフォルトの名無しさん
07/10/08 06:41:15
宿題がでると妙に活気づくなあ。よいよい
638:デフォルトの名無しさん
07/10/08 08:29:35
>>622
Scheme 臭いコードだなあ。
internal defun なんて意味不明なこともやってるし。
どこの大学のなんて香具師が担当してる講義なのか晒しちゃえよ。
639:デフォルトの名無しさん
07/10/09 09:02:43
scheme臭がすると異常反応するスレw
640:デフォルトの名無しさん
07/10/09 09:15:13
過剰反応っていう言葉はあるけど、異常反応ってのはあんまり聞かないな。
641:デフォルトの名無しさん
07/10/09 12:40:54
Scheme臭に抵抗無かったらSchemeを使ってるよ
642:デフォルトの名無しさん
07/10/09 13:13:23
俺はScheme臭に抵抗ない、むしろSchemeっぽい書き方の方が好きだけど、
Common Lispの便利な機能でSchemeにないものが多いからCommon Lisp使ってる
643:デフォルトの名無しさん
07/10/09 13:16:26
たとえばなに
644:デフォルトの名無しさん
07/10/09 13:25:48
スペシャル変数とか
645:デフォルトの名無しさん
07/10/09 20:24:02
エレガントかつ強力なloop構文とか
646:デフォルトの名無しさん
07/10/09 21:04:26
format
647:デフォルトの名無しさん
07/10/09 23:45:18
reader macro
648:デフォルトの名無しさん
07/10/10 01:03:54
compile, eval-when, disassemble, trace, optimize ... とか?
でも Scheme も Gauche なら便利だから使うな。頭は別の言語として切り替わるのであんまり困る事はない。
むしろ片方を撰択して、もう片方を見下す、みたいな行為をやめて両方使えばいいじゃん。
649:デフォルトの名無しさん
07/10/10 01:17:20
見下されたと錯覚した人が攻撃に転ずる気がする。多くの戦争と同じ原理だ。
650:デフォルトの名無しさん
07/10/10 01:30:52
CL の人としては funcall はクソとか、*常に* 末尾再帰を最適化しないとクソ、みたいな一面的な見方に反論したくなる気持ちはわからんでもない。
が、実際にいちいち反論する人は 2ch 以外ではあんまりみかけないなぁ。
651:デフォルトの名無しさん
07/10/10 01:32:20
そういや 622 はどうなったんだ?締切とか大丈夫なのか?
652:デフォルトの名無しさん
07/10/10 07:38:56
ΣってどうやってCommon Lispで定義出来ますか?
リスト(2 4 6 8 )を全部足す奴。
なるべく再帰で。
653:デフォルトの名無しさん
07/10/10 07:58:10
>>652
(loop for x in '(2 4 6 8) sum x)
654:デフォルトの名無しさん
07/10/10 08:38:38
そういうときは apply 使うのが好きかな
(apply #'+ '(2 4 6 8))
655:デフォルトの名無しさん
07/10/10 09:53:05
>>649
そんでもって、「見下してないよ、それはあなたの被害妄想だよ」と言い張れる言い方で見下すのが
ネットの基本戦術なんだよな。
656:デフォルトの名無しさん
07/10/10 12:09:12
ACLのアカデミック版って($99の奴)って
日本の学生って適応されないの?
ざっとみたところ、米国のみって記述が見つからなかったけれど。
657:656
07/10/10 18:03:34
お金払ったのに、いつまでたってもソフトウェアダウンロードの案内がこない
(ストアのアカウント作成の案内も)と思っていたら、
URLリンク(help.yahoo.co.jp)
マジカよ。アリエネェだろ。
フリーメールで登録するんじゃなかった。
日本のFranzに問い合わせても大丈夫かな。
658:デフォルトの名無しさん
07/10/10 19:52:34
(defun sigma (x &optional (y 0))
(if (null x) y
(sigma (cdr x) (+ (car x) y))))
再起にしたらこんな幹事?
659:デフォルトの名無しさん
07/10/10 21:01:45
末尾再帰って指示ないなら出題者はこっちを意図してるかも
(defun Σ (list) (if list (+ (car list) (Σ (cdr list))) 0))
660:デフォルトの名無しさん
07/10/10 21:04:16
>>654でまずい理由でもあるの?
>>658-659はΣでもなんでもなく、+の再定義でしかない
661:デフォルトの名無しさん
07/10/10 21:33:34
>>660
拡張しにくい。範囲の制限や関数 f を適用した結果を集めたいときに、関数ならパラメータを追加することで対応できる。
というかそっちの方向に進むと思われるので、(apply #'+ ...) じゃなくて普通は自前で実装するところからはじめるんだろう。
662:デフォルトの名無しさん
07/10/10 22:19:46
sbclのコンパイルについて教えてください・・・。
動作環境はWin XP, sbcl Ver.1.0.9です。
URLリンク(fridge-shell.blogspot.com)
このHPと同じように操作すると、outファイルができるので、
これをout.exeにリネームしてコマンドプロンプトで実行すると
応答がかえってこずに固まってしまいます。
このスレで、sbclでコンパイルした実行ファイルはサイズが大きい(10MB?)
というレスをみましたが、outファイルは2kBしかありません。
ネイティブコンパイルする手順がWin版とLinux版では異なるのでしょうか・・・
663:デフォルトの名無しさん
07/10/10 22:34:35
>>662
SBCL Windows 版はまだ誰もが使えるような状況ではありません。
試験的なリリースですので問題を自力で解決できる人向けのものです。
Windows 版自体がまだ実験的なものですので、EXE の生成機能は非サポートです。
「ネイティブコンパイルする」 == 「.exe を生成する」というのは Lisp の世界においては成立しません。
.exe を生成するのは「スタンドアロンなバイナリ/実行形式を生成する」と呼ばれる機能です。
ネイティブコードの生成自体はもっと簡単です。プロンプトで (compile nil (lambda (x y) (+ x y))) と打つだけで
コンパイラはネイティブコードを生成できます。
664:662
07/10/10 22:46:09
>>663
ご回答ありがとうございます。
Win版はexeの生成は非サポートだったのですね・・・。
こういう時だけlinuxが羨ましくなります。 orz
いろいろと勉強になりました。
ありがとうございました。
665:デフォルトの名無しさん
07/10/10 23:00:41
ついでに言っておくと、Lisp の世界ではスタンドアロンバイナリ生成を使う機会はほとんどない。
なぜなら、Lisp の世界ではアプケーションはユーザーが触って変更できる「システム」である事が多いから。
Emacs や Maxima や Aximo などはユーザーがプログラムを投入するたびに .exe を生成したりしない。
ベースの機能にユーザーによる拡張をインクリメンタルに追加しながら増えていくんだ。
この辺が感覚的に合わないなら Scheme のほうがいいかもしれない。
# LispWorks や AllegroCL、CormanCL のような商用の話や、GCL, ECL, といった GCC をバックエンドに使う連中とかはまた別
666:デフォルトの名無しさん
07/10/11 01:40:48
>>665
「Schemeのほうがいい」理由がよくわからん。
単にスタンドアロンバイナリをスマート作れない処理系が多いというだけでは?
667:デフォルトの名無しさん
07/10/11 02:19:03
サイズはでかいけどwinのsbclでsave-lisp-and-dieは
結構まともに動いているように思う。
一般的でないのはlispで配布するという機会が見ている分にすくないだけで
exe作るのって他所の言語と比べて難しいとは全く思わないのだけれど。
lispで作られて配布されている有名なソフトってあります?
668:デフォルトの名無しさん
07/10/11 08:05:42
>>662
sb-executable って、もうほとんどサポートされてないよ。
save-lisp-and-die の :executable に置換済み。
>>667 が言ってるように、save-lisp-and-die は Win32 でもちゃんと動く。
C:\>sbcl
This is SBCL 1.0.9, an implementation of ANSI Common Lisp.
<snip>
This is experimental prerelease support for the Windows platform: use
at your own risk. "Your Kitten of Death awaits!"
* (defun main () (print "Hello, SBCL!") (quit))
MAIN
* (save-lisp-and-die "hello.exe" :toplevel #'main :executable t)
[undoing binding stack and other enclosing state... done]
[saving current Lisp image into C:\\hello.exe:
writing 1960 bytes from the read-only space at 0x02000000
writing 1640 bytes from the static space at 0x02100000
writing 22888448 bytes from the dynamic space at 0x09000000
done]
C:\>hello
This is experimental prerelease support for the Windows platform: use
at your own risk. "Your Kitten of Death awaits!"
"Hello, SBCL!"
669:デフォルトの名無しさん
07/10/11 08:12:26
便乗質問させてもらうけど
1. ネイティブコンパイラがある(コンパイルした結果が速い)
2. 実行可能形式(EXEやDLL)が作れる
3. マルチスレッドアプリが書ける。
4. (基本的な)CLOS(オブジェクト指向)機能のサポート
5. ソケットインターフェースのサポート
6. 作成したアブリを配布する際のライセンス料が安い、もしくは無料
これらの条件を全て満たすフリー
もしくは比較的安価な商用Lisp処理系と言ったら
やっぱりCorman Lispが一番かな?
ブラットフォームはWindowsが前提です。
670:デフォルトの名無しさん
07/10/11 09:41:35
Windows ってだけでフリーの実装はほぼ全滅だからね
Lisp で遊ぶなら UNIX
671:デフォルトの名無しさん
07/10/11 12:25:35
>>669
比較的安価ってだけでLispWorksがそれに該当するんじゃない?
(対象がACLだから安く感じるだけかもしれんが)
672:デフォルトの名無しさん
07/10/11 13:23:22
商用だとTorrentはまずいかな。
673:デフォルトの名無しさん
07/10/11 13:46:22
Windowsにポーティング中のSBCLはGCのバグまだ残ってるみたいね。
やる気ないにしても、POSIX以外だとそんなに移植が困難な実装なのかな?
それともWindowsで動かせちゃダメみたいな変な勢力が邪魔してるとか。
674:デフォルトの名無しさん
07/10/11 18:28:42
>>666
「スマート」の意味がわからん。スタンドアロンバイナリにスマートとそうじゃないものがあるの?
CLISP, SBCL, GCL, ECL, ACL, LispWorks, CormanLisp... スタンドアロンバイナリを生成できないのって ABCL くらいじゃないか。
>>668
SBCL for Win32 系で「ちゃんと動く」とかは言わないほうがいいと思うんだよなー。
use at your own risk なんで初心者に進めると混乱の元じゃないか。
>>669
ECL も忘れないでやってください。
>>673
単に開発者がいないだけ。
675:デフォルトの名無しさん
07/10/12 01:45:55
俺は OpenMCL をいつか弄りたいと思ってる。スレッド廻りきちんとしてそうだし、フットプリント小さいし。