Lisp Scheme Part22at TECH
Lisp Scheme Part22 - 暇つぶし2ch764:デフォルトの名無しさん
08/06/20 16:21:32
<lambda expression> --> (lambda <formals> <body>)
<quotation> --> '<datum> | (quote <datum>)
<assignment> --> (set! <variable> <expression>)
<conditional> --> (if <test> <consequent> <alternate>)
<definition> --> (define <variable> <expression>)
      | (define (<variable> <def formals>) <body>)
      | (begin <definition>*)

765:デフォルトの名無しさん
08/06/20 16:23:38
ただし意味論上の<list>と同一ではない

766:デフォルトの名無しさん
08/06/20 16:36:42
>>741
んなことない。トップレベルでの継続がどこまでの範囲を補足するかの
規定がR5RSには無いんだから、どっちの解釈もあり。
Gauche系の解釈でもトップレベルbeginをletに展開しているわけじゃない
(letに展開したらdefineがうまくいかない)。
コンパイルと実行の単位の問題で、継続の捕捉範囲が変わってるだけ。


767:デフォルトの名無しさん
08/06/20 16:59:38
生存期間が書かれてなければ、無限生存期間なのではないでしょうか。
コンスセルがそうであるように。

768:デフォルトの名無しさん
08/06/20 17:15:07
>>764
これは「構文上リストとして定義」ではないです。

これが「構文上リストとして定義」なら、
他の言語に良くある<式> --> ( <式> ) までそうなってしまいます。

そもそも「構文上リストとして定義」という概念はないと思います。
リストには、シグネチャや意味が付いてまわりますから。

769:デフォルトの名無しさん
08/06/20 17:18:32
>>723
> ;A
> (display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
> (display 'fuga)
> (cc 'moga)

(call/cc (lambda (c) (set! cc c) (cc 'hoge)))
(display 'fuga)
(cc 'moga)

だとどうでしょう?



770:デフォルトの名無しさん
08/06/20 17:28:28
<list> --> (<datum>*) | (<datum>+ . <datum>)
       | <abbreviation>
<datum> --> <simple datum> | <compound datum>
<simple datum> --> <boolean> | <number>
     | <character> | <string> |  <symbol>
<symbol> --> <identifier>
<identifier> --> <initial> <subsequent>*
     | <peculiar identifier>
<initial> --> <letter> | <special initial>
<letter> --> a | b | c | ... | z

<special initial> --> ! | $ | % | & | * | / | : | < | =
     | > | ? | ^ | _ | ~
<subsequent> --> <initial> | <digit>
     | <special subsequent>
<digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<special subsequent> --> + | - | . | @
<peculiar identifier> --> + | - | ...
と辿れば一応リスト。(構文キーワードも識別子だから)
他の言語に良くある<式> --> ( <式> ) はSchemeには存在しない。
うーん、苦しいw

771:デフォルトの名無しさん
08/06/20 18:39:07
aclって今でもアホみたいに高いの?
USでは$599 (アカデミックユーザ)からとはかかれてたが。

772:デフォルトの名無しさん
08/06/20 22:06:43
レス遅くてサーセン

>>753
指定されたパスが見つかりません。(←MSYS.bat上だと文字化けしてる
*** Shell command terminated with exit status 1: /chicken/bin/chicken test.scm -output-file test.c -quiet
って言われてしまうお…

やった
OS WinVista Ultimate
MinGW 5.1.4は元から入れてあった
MSYS 1.0.10インスコ(インスコ途中にMinGWの場所指定しろって言われたからした
PATHをchicken/binな場所に通した
msys.bat実行した csc test.scm とかしてみたら上記エラー
/(MSYSインスコ場所直下)にchickenフォルダ移してみたりとかもやってみたけどダメだったぜ…

よくわかんねーけど
URLリンク(alohakun.blog7.fc2.com)
とかみるとoファイルが吐かれるらしいけど、何もファイル吐かれてない… .cも吐かれてない
ボスケテ

773:デフォルトの名無しさん
08/06/20 23:06:26
>>772
パス指定がどっかで決め打ちになってる予感。

774:デフォルトの名無しさん
08/06/20 23:23:54
>>772

c:\chicken\bin>csc -dynamic test.scm
ってやってみるとgccがないって怒られるけど、.cファイルは作られる。
おそらくオプション指定の問題。

775:デフォルトの名無しさん
08/06/21 00:18:40
csiは起動しますか?

776:デフォルトの名無しさん
08/06/21 00:20:48
自分の環境でビルドすると.scmから.exeファイルが作られるだけで.cも.oも残りませんね

777:デフォルトの名無しさん
08/06/21 00:25:43
結局gccが必要なのか。

778:デフォルトの名無しさん
08/06/21 00:31:58
どうもいろいろ試してみた所772のエラーメッセージは
chickenディレクトリがc:\にない場合に出る模様。
c:\chickenになってますか?

779:デフォルトの名無しさん
08/06/21 09:50:28
>>774
コマンドプロンプトからそれやってみると同じエラーが出る罠

>>775
今やってみたらコマンドプロンプトだと出来るけどMSYSでやってみたら起動しなかった
エラーもなんも表示されない不思議な状態になった もちろん何か入力してもなんもなし

>>778
d:\Scheme\chicken\binに置いていてお PATHの設定でそっち指定してたけど
chickenをC直下において
>>753の通りにパス設定したらエラーが変わったお

'gcc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
*** Shell command terminated with exit status 1: gcc test.c -o test.o -c -fno-strict-aliasing -DHAVE_CHICKEN_CONFIG_H -Os -I /chicken/include

で、とりあえずcファイルはできた

で、エラーに従って
export PATH=/c/MinGW/bin:$PATH とかしてみたら
Info: resolvingうんたら~ってメッセージが5個くらい出たけどtest.exeが出来ました!

ついでにobjdump -p test.exeしてみたら
DLL Name: libchicken.dll
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
だってさ MinGW周りのDLLはいらないっぽいのが不思議だ…

というわけでした!みんなありがと!愛してるぜ!

780:デフォルトの名無しさん
08/06/21 15:25:18
>>779
MinGWって、C++のスレッド関係で独自ランタイム必要とするだけで、
CならMSのCランタイムだけで大丈夫じゃなかったっけ?

781:デフォルトの名無しさん
08/06/22 00:05:58
>>200番台でやってた継続の例をwikipediaでみつけた。

URLリンク(en.wikipedia.org)

>>268-271と似てる~

782:デフォルトの名無しさん
08/06/22 02:46:40
>>767>>766 へのレス?
生存期間の話じゃないよ。継続の「底」をどこに取るかって話。
R5RSのトップレベルの実行はREPLの実行と区別されていない。全ての
トップレベルフォームが見えてる状態で一気に実行するところを
継続の起点と見るか、REPLにおいてトップレベルフォームひとつひとつ
を実行するところを継続の起点と見るか、って違い。

R6RSではREPLそのものが無くなって、トップレベルの意味は明確化された。


783:デフォルトの名無しさん
08/06/22 09:31:57
REPLって何?

784:デフォルトの名無しさん
08/06/22 09:39:13
Random Electrical Pulse Light

785:デフォルトの名無しさん
08/06/22 10:04:02
reed eeval print lup

786:デフォルトの名無しさん
08/06/22 10:08:03
呪文:よんでひょうかしていんさつしてくりかえす

787:デフォルトの名無しさん
08/06/22 11:12:56
ググれ

788:デフォルトの名無しさん
08/06/22 12:45:05
話は変わるけど、Gaucheboxに入ってるGaucheってmingwバイナリパッケージのより新しい?
pegとかも入ってるんだけど…。

789:デフォルトの名無しさん
08/06/22 15:26:09
; >>783

;The Read-Eval-Print Loop

(define (driver-loop)
(begin
(let ((input (read))) ; read
(let ((output (eval input))) ; eval
(display output))) ; print
(driver-loop))) ; loop

790:デフォルトの名無しさん
08/06/22 15:45:57
>>788

URLリンク(practical-scheme.net)

基本的にGaucheのCVS HEAD(今はSubversion trunk)をビルドするので、
その時点の最新版が入る。リリース版の0.8.13より新しい。

791:デフォルトの名無しさん
08/06/22 15:51:15
(define (eval x)
x)

(define (driver-loop)
(begin
(let ((input (read)))
(let ((output (eval input)))
(display output)(newline)))
(driver-loop)))

(driver-loop)

792:デフォルトの名無しさん
08/06/22 16:23:43
>>791
Lispではよくあることだが、式と値を混同しているね

793:デフォルトの名無しさん
08/06/22 21:53:32
>>792
それではevalのお手本をどうぞ。

794:デフォルトの名無しさん
08/06/22 22:01:24
>>791
> (define (eval x)
> x)

これマジレスなのw

795:デフォルトの名無しさん
08/06/22 22:08:34
S式を 評価するのに 値呼び

796:デフォルトの名無しさん
08/06/22 22:14:49
評価頼られてるのに、自分はとんずらして、他に丸投げかよ。

797:デフォルトの名無しさん
08/06/22 22:25:15
あと、継続渡しと称して (lambda (x) x) を渡すこともあるね

798:デフォルトの名無しさん
08/06/22 22:49:16
普通にこれで動く。

(define (driver-loop)
(begin
(let ((input (read)))
(let ((output (eval input)))
(display output)(newline)))
(driver-loop)))

(driver-loop)

でもevalのお手本、観てみたいな。

799:デフォルトの名無しさん
08/06/22 22:51:28
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

800:デフォルトの名無しさん
08/06/22 22:59:06
批判してる奴ってなんでそんなにエバルんだろう?

801:デフォルトの名無しさん
08/06/22 23:04:05
>>797
それ
(define (eval x)
(lambda (x) x))
という意味?
(+ 2 2)
=>
#<procedure>
になると思うよ。ちょっとマズイ気がする。

802:デフォルトの名無しさん
08/06/22 23:32:42
修辞疑問のお手本ですか

803:デフォルトの名無しさん
08/06/23 01:01:45
Lisp Scheme FAQ
「修辞疑問文」

要点を強調するために発せられる修辞疑問文では、答は期待されていない。
多くの場合、答は疑問文自体に含まれるか明白だからである。
前提的疑問文は、答えうるものが何であれ、その人が断定しようと望んでいること以上の情報を含んでしまうだろうから、
ジョークとして用いられたり、相手を困らせるために用いられたりする場合がある。

例)
批判してる奴ってなんでそんなにエバルんだろう?
修辞疑問のお手本ですか

804:デフォルトの名無しさん
08/06/23 01:03:20
なるほど「修辞疑問のお手本ですか」は修辞疑問文の再帰的な定義になっているわけだ。w

805:デフォルトの名無しさん
08/06/23 06:53:39
つ「修辞疑問って答えを期待してないんじゃないんですか?」

806:デフォルトの名無しさん
08/06/23 06:57:39
>>803
この例の会話ヘンだよ。

>例)
>批判してる奴ってなんでそんなにエバルんだろう? <=答えを期待してない
>修辞疑問のお手本ですか <=なぜか答えてるw

807:デフォルトの名無しさん
08/06/23 13:54:34
期待してないものが思いがけず手に入ることだってあるんですよ

808:デフォルトの名無しさん
08/06/23 15:39:59
修辞疑問の意味もわかってないのに使うからだよw
みっともないなぁ。

809:デフォルトの名無しさん
08/06/23 17:57:26
これは勝利宣言っぽいな。或いは単に言葉が足りない。

810:デフォルトの名無しさん
08/06/23 20:23:03
>>790
WiLiKiはだいたい見てるつもりだったけど気づいてなかった。
peg使ってみたかったけどコンパイルめんどいからリリース待ちだったので、
不意に動くバイナリが手に入って嬉しい。

ところでGaucheはもう完全にSubversionに移行してんの?

811:デフォルトの名無しさん
08/06/23 20:44:01
言葉遊びなんかどうでもいいんだよ。
evalのお手本、誰か書いてよ。簡単そうに言ったんだら。
マジ、期待したのに。

812:デフォルトの名無しさん
08/06/23 21:30:25
evlis[m;a] = maplist[m; \[[j];eval[car[j];a]]]


813:デフォルトの名無しさん
08/06/23 21:31:12
evcon[c;a] = [null[c]->error[A3];
eval[caar[c];a]->eval[cadar[a];a];
T->evcon[cdr[c];a]]


814:デフォルトの名無しさん
08/06/23 21:32:21
apply[fn;args;a]=[
null[fn]->NIL;
atom[fn]->[get[fn;EXPR]->apply[expr;args;a];


815:デフォルトの名無しさん
08/06/23 21:34:46
M式とはまた古風だな

816:デフォルトの名無しさん
08/06/23 21:41:34
evalくらいでエバらないでよね!

817:デフォルトの名無しさん
08/06/23 21:45:59
LISP 1.5 の論文の丸写しだなw

818:デフォルトの名無しさん
08/06/23 21:55:40
SchemeはS式で意味論が定義されていないのでLispではない、という話があったけど
S式とM式を使うLispはLispではないの?

819:デフォルトの名無しさん
08/06/23 21:59:15
M式→S式は機械的に変換可能。単に表記の問題。

820:デフォルトの名無しさん
08/06/23 22:00:20
LISP 1.5 Programmer's manual の eval の定義は確か ] が一つ
足りないんだよね。丸写しするとアウトかな?

821:デフォルトの名無しさん
08/06/23 22:03:03
LISP 1.5 はM式で入力できるわけじゃないしね

822:デフォルトの名無しさん
08/06/23 22:08:30
>SchemeはS式で意味論が定義されていないのでLispではない、という話があったけど
すごい燃料を投下する奴もいたもんだ(w
どうなったのかな?

823:デフォルトの名無しさん
08/06/23 22:15:38
>>812-814
Schemeに翻訳キボンヌ

824:デフォルトの名無しさん
08/06/23 22:46:27
もったいぶった前口上はいいからw

825:デフォルトの名無しさん
08/06/24 07:52:08
>>822
古い話だよ。R6RSで解決。


826:822
08/06/24 08:00:17
>>825
サンクス!
やっぱりR6RS読んでみるか・・・
でもこれ、俺には大仕事なんだよな~ orz

827:デフォルトの名無しさん
08/06/24 10:08:52
つ「はてなようせい 意味論」でググれ

828:デフォルトの名無しさん
08/06/24 12:00:23
>>818
「S式で」どころか「意味が定義されてない」Lispが多い。
だから「S式で意味が定義されてない」とLispでないなら、
多くのLispはLispではない。


829:デフォルトの名無しさん
08/06/24 12:06:20
形式的定義だけが定義じゃないけどな

830:デフォルトの名無しさん
08/06/24 16:23:55
自分の手でSchemeを使ってevalが書けないのが明白になりつつあるなw

831:デフォルトの名無しさん
08/06/24 17:39:15
Schemeを使ってevalを書くのは容易
だけどどの程度ホスト処理系の機能を使う事が要求されているんですか?
特別式は使っていいんですか?

(define (my-eval e env)
  (cond ((self-evaluate? e) e)
        ((symbol? e)
         (let ((x (assq e env)))
           (if x
               (car x)
               'UNBOUND)))
        ((and (pair? e)
              (eq? (car e) 'if)
              (pair? (cdr e))
              (pair? (cddr e))
              (pair? (cdddr e))
              (null? (cddddr e)))
         (if (my-eval (cadr e) env)
             (my-eval (caddr e) env)
             (my-eval (cadddr e) env)))
        ... ))
みたいな程度でいいんですか?

832:デフォルトの名無しさん
08/06/24 17:39:50
typo
(car x) -> (cdr x)

833:デフォルトの名無しさん
08/06/24 18:56:51
>>831
もともと>>782の説明に使うevalが求められていたから、その違いを表面化させることが出来るならホスト処理系の機能を使う事が許されていると思う。

834:デフォルトの名無しさん
08/06/25 00:38:52
機種依存無しで違いを表面化させて再現するevalを書くの大変そうだ。

>>831
期待してるよ。

835:デフォルトの名無しさん
08/06/25 00:46:25
簡単だろ。
というかSICPの課題させようとしてるだろ?
大学の宿題か?

836:デフォルトの名無しさん
08/06/25 00:52:07
>>835
話しそらすの上手だね。
>>723から始まったbeginのトップレベルの継続の違いを再現してみせる2種類のevalが本題。
別に宿題とか云う次元の話じゃない。逃げたきゃ逃げれば?どうせ匿名だし。

837:デフォルトの名無しさん
08/06/25 00:54:57
どうせ匿名なんだから構わなきゃいいのにw

838:デフォルトの名無しさん
08/06/25 02:29:22
>>835はいい奴だと思う。

M式書き写してLISP 1.5のウンチクたれてる誰かさんより。

839:デフォルトの名無しさん
08/06/25 03:21:49
いい奴だが不要だ

840:デフォルトの名無しさん
08/06/25 04:35:41
>>836-837
結局、処理系のソースでも読んで君自身で作るしかないだろうな。
違いを再現するためにevalを作れという事は、
つまり「継続を含んだeval」が必要で、
そのevalと同位の継続もファーストクラスとして必要になる。
そうでないと組み込みbeginと構文唐beginの違いは多分理解できない。
ここの住人は冷めてるから、いくら喚き散らしても
そこまで面倒な事をこの流れでやるわけがない。
ちなみに継続はSICPの範囲外だ。
がんばれ。

841:デフォルトの名無しさん
08/06/25 05:53:13
しょうがねえなあ、ちょっと書いてやるから後は考えろ。

(define (eval exp env cont)
(cond ((number exp?) (cont exp))
((symbol? exp) (eval-var exp env cont))
// ry
(else (eval-list exp env (lambda (l) (apply (car l) (cdr l) cont))))))


842:デフォルトの名無しさん
08/06/25 06:04:33
on lispに

843:デフォルトの名無しさん
08/06/25 07:44:15
R5RSの解釈の問題なら、仕様書を読まずに解決することはあり得ないですね

844:デフォルトの名無しさん
08/06/25 08:41:26
(begin
 (define cc #f)
 (display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
 (display 'fuga)
 (cc 'moga))

が無限ループにならない実装はtop-levelのbeginだけ特別にスプライスして

(eval '(define cc #f) (interaction-environment))
(eval '(display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (interaction-environment))
(eval '(display 'fuga) (interaction-environment))
(eval '(cc 'moga) (interaction-environment))

とやっているからで、これはevalの実装というよりマクロの展開方法の違いと言える。
ちなみにR5RSは一塊でevalしてもスプライスしてevalしてもどっちでもよかったと思うけど。



845:デフォルトの名無しさん
08/06/25 14:34:35
>とやっているからで、これはevalの実装というよりマクロの展開方法の違いと言える。
>ちなみにR5RSは一塊でevalしてもスプライスしてevalしてもどっちでもよかったと思うけど。

これDrSchemeとか他の処理系を確認して書いた?

846:デフォルトの名無しさん
08/06/25 14:38:39
>というかSICPの課題させようとしてるだろ?

>ちなみに継続はSICPの範囲外だ。

Seasoned Schemerには継続が出てくる。

847:デフォルトの名無しさん
08/06/25 15:09:03
R5RSの5.1節を
「beginで囲んでも囲まなくても意味が変わらない」
と解釈するならスプライスするべきです。

意味が変わるというなら、どう変わるのか明確にするべきです。

848:デフォルトの名無しさん
08/06/25 15:22:20
>>845
「処理系確認する」ってやり方で判定すると、
「どっちでもいい」個所がどんどん増えるだけだと思うが?

849:デフォルトの名無しさん
08/06/25 16:10:38
>>847
のように考えた人が作ったのでDrSchemeはあのように動作しているらしい。
それはここを見れば解るよ。
URLリンク(www.cs.brown.edu)
明確な根拠が書かれていれば嬉しかったのだが・・・残念


850:デフォルトの名無しさん
08/06/25 16:27:08
>>848
かなり上のほうでGaucheとDrSchemeを比較してたから。
確認して書いてるなら話がつながるだろ?

851:デフォルトの名無しさん
08/06/25 16:42:05
>>847
> R5RSの5.1節を

At the top level of a program (begin <form[1]> ...) is equivalent to
the sequence of expressions, definitions, and syntax definitions
that form the body of the begin.


852:デフォルトの名無しさん
08/06/25 17:27:47
>>851
>is equivalent to
この文をどう解釈するか。
ひとつめは
>「beginで囲んでも囲まなくても意味が変わらない」
という立場だ。
もうひとつは
>意味が変わるというなら、どう変わるのか明確にするべきです。
という立場だ。Gaucheの挙動はこっちだった。

ここまでの流れ:
Gaucheの挙動ってエラーじゃねえの?=>エラーじゃねえよ!=>ならeval書いて説明してみろよ=>evalなんて簡単。=>さっさと書け、ゴラァ!
=>ほら書いてやったぞ=>それじゃ意味が明確になってねえぞ、ゴラァ!(今このへん)

853:デフォルトの名無しさん
08/06/25 17:33:04
>>852
> ならeval書いて説明してみろよ

この馬鹿発言は無視すべき


854:デフォルトの名無しさん
08/06/25 18:39:07
eval書いて説明するような話じゃないよな

855:デフォルトの名無しさん
08/06/25 18:45:43
Gaucheの挙動ってバグじゃねえの?
=>バグじゃねえよ!
=>R5RSではトップレベルの実行はREPLの実行と区別されていないよ、R6RSではREPLが廃止されたけどね
=>REPLってなーに?
=>Read Eval Print Loop
=>(define (eval e) e)
=>S式の評価なのに値呼びpgr
=>ならてめーが手本を見せてみろよ
=>(マッカーシーの論文の丸写し)
=>自分の手で書けねーのかよ
=>evalなんて簡単。
=>さっさと書け、ゴラァ!
=>ほら書いてやったぞ(<=今このへん)
じゃない?

継続の底を説明する為にevalを書くって話は832で初めて出てきたような

856:デフォルトの名無しさん
08/06/25 18:49:29
(define (eval e) e) は近年まれに見る傑作だな。w

857:デフォルトの名無しさん
08/06/25 18:55:32
unicodeで書いたソースコードの改行が"\n"になってる処理系と"\n"(\は半角)になってる処理系があるんだな。
"\n"で改行しなくて驚いた。

858:デフォルトの名無しさん
08/06/25 19:15:04
>>856
(define (^-^)(print '許してやんなよ。))



859:デフォルトの名無しさん
08/06/25 19:16:26
>>855
これってアンチのネタだったのか・・・

860:デフォルトの名無しさん
08/06/25 19:17:52
>>858
(define (・x・) (print 'Bカップ))


861:デフォルトの名無しさん
08/06/25 19:18:53
>>855-856がshiroさんのもうひとつの顔だったら怖い

862:デフォルトの名無しさん
08/06/25 19:30:21
いいこと思いついた
おまえらちょっとeval書け

863:デフォルトの名無しさん
08/06/25 20:31:12
REPL「いいこと思いついた。おまえ俺の中でbeginしろ。」

864:デフォルトの名無しさん
08/06/26 02:02:39
>>858, >>860
> (^-^)
許してやんなよ。
> (・x・)
Bカップ

エラー吐くかと思ったらw

865:デフォルトの名無しさん
08/06/26 02:24:42
(cut or <> <>)
(fold or #f '(#f #f #t))
怒られる なんで?

866:デフォルトの名無しさん
08/06/26 02:32:46
orがapply出来ないから。
(fold (lambda (x y) (or x y)) #f '(#f #f #t))

867:デフォルトの名無しさん
08/06/26 03:00:35
そうなのか…
ちょっと明日R5RSとにらめっこしながら考えてみるわ
不便だなぁな気がする…

868:デフォルトの名無しさん
08/06/26 03:41:29
C言語に例えると式の中にif文混ぜるようなもの。

869:デフォルトの名無しさん
08/06/26 07:21:11
>>855
>S式の評価なのに値呼びpgr
値呼びは間違いではないし、pgrなんて誰も言ってないよ。

式を評価するタイミングを理解できない人が多いのは
S式の見た目が単純すぎることと、評価の仕組みがわりと複雑なことのギャップが
驚き最小の原則に反しているんじゃないかな。

870:デフォルトの名無しさん
08/06/26 07:59:08
Gaucheでバグかなと思ったのあるけど聞ける雰囲気じゃないね
Rubyより怖い

871:デフォルトの名無しさん
08/06/26 08:10:33
ああ、宗教的な何かがここに蔓延してることにしたいわけね。

大丈夫だよ。馬鹿は論理的に叩かれるけど、馬鹿じゃなければ叩かれない。
書いてみれば?

872:デフォルトの名無しさん
08/06/26 08:24:07
>>867
orが普通の関数だと、
ショートカットにならなくて、
それはそれで不便。

Schemeの特殊形式は
数が少ないから覚えられる。
覚えよう。

873:デフォルトの名無しさん
08/06/26 08:39:11
rubyってこわいの?

874:デフォルトの名無しさん
08/06/26 08:52:37
つ 落語&「rubyよりこわい」

875:デフォルトの名無しさん
08/06/26 09:13:10
>>870
別にネタや燃料の投下になってもいいじゃん!

876:デフォルトの名無しさん
08/06/26 12:41:57
バクだってあるさ
にんげんだもの


877:デフォルトの名無しさん
08/06/26 16:18:00
ココのスレ見るとLisperさんが何をしてきてどう思われてるかが良くわかります。こういう印象です。
スレリンク(tech板)

878:デフォルトの名無しさん
08/06/26 16:20:40
粘着、こっちまで遠征かよw

879:デフォルトの名無しさん
08/06/26 19:58:10
>>871
ほとんど名指しされてるw

880:デフォルトの名無しさん
08/06/27 06:31:04
>>870 WiLiKiに書いたら? ちゃんと対応されるみたいだし

881:デフォルトの名無しさん
08/06/27 06:44:49
Rubyをプログラミング言語の基準にやめろ
あれはあれで特殊。

RubyとGaucheとMosh、みんな違ってみんないい

882:デフォルトの名無しさん
08/06/27 06:50:14
ジャパニーズでおk

883:デフォルトの名無しさん
08/06/27 08:34:34
>>882
I cannot understand your words.
"It is k in Japanese"
What meaning is it?
Please write in English.

884:デフォルトの名無しさん
08/06/27 11:02:25
コピペか? ひっでえ英語w

885:デフォルトの名無しさん
08/06/27 13:07:52
>>884
偶然だぞ

何言いたいかと申しますと「ジャパニーズでおk」という日本語では、外人さんに伝わるものも伝わらないだろう、と言いたいわけです

日本語でやり取りしてるサイトなのだから外国人なぞ居ない、日本人しか居ないのだ、と思い込んでいませんか?
日本人がYoutubeを使っているように、外国人も2chを使っている可能性があるのではないのですか? 何故その可能性を排除しますか?
母国語ではない言語を使うことに苦労しながらも、それでも私達とコミュニケーションをとろうとしている(のかもしれない)人物に対して
「ジャパニーズでおk」という物言いをするのは良いことなのですか?
コミュニケーションをとろうと努力している(のかもしれない)相手に対して、随分失礼な態度ではないのでしょうか
それとも、そんな振舞いをするのが日本人なのですか? 相手にけして通じない言葉を使って悦に入る。それが日本人の性格なのですか?

プログラミング言語のほとんどは日本以外の国で作られたものですから、日本人はその習得や理解に多少なりとも苦労しているはずです
ドキュメントの大多数は英語文献で公開され、英語が不得意な日本人であれば読むのも一苦労でしょう
そのような苦痛をこの板に集う人々は自ら日々感じていながら、何故相手に通じない日本語を使うのですか?

886:デフォルトの名無しさん
08/06/27 13:09:55
そして私は思いました
>>881が日本人なら、私こそが失礼なことを言っています…

887:デフォルトの名無しさん
08/06/27 13:28:06
886は外人さんなのな
2chはある意味、かなり高度な日本語(スラング的な意味で)が要求されるから
もっと慣れてから書き込むべきです。
このBBSで長文を書き込むことと、必死になることは推奨されていません。

そしておそらく881は日本人です

888:デフォルトの名無しさん
08/06/27 14:00:40
おまえらの人種が何なのかなんて興味無いよw

889:デフォルトの名無しさん
08/06/27 14:35:56
おまえらここは言い争いの場にやめろ

890:デフォルトの名無しさん
08/06/27 15:24:25
>>888
おまえの興味なんて興味無いよw

891:デフォルトの名無しさん
08/06/27 15:25:16
>>890
おまえの興味なんて興味無いよw

以下再帰的なので略

892:デフォルトの名無しさん
08/06/27 15:30:14
ここは酷い名無し再帰スレです。

893:デフォルトの名無しさん
08/06/27 16:54:30
>>892
Yコンビネータ乙

894:デフォルトの名無しさん
08/06/27 18:08:39
不動点ですが何か?

895:デフォルトの名無しさん
08/06/27 18:15:23
>>894
894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?

896:デフォルトの名無しさん
08/06/27 18:18:32
>>895
895 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:15:23
>>894
894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?


897:デフォルトの名無しさん
08/06/27 18:19:16
>>896
896 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:18:32
>>895
895 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:15:23
>>894
894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?

898:デフォルトの名無しさん
08/06/27 18:35:05
やめいw

899:デフォルトの名無しさん
08/06/27 19:05:20
本当に再帰すんなw

900:デフォルトの名無しさん
08/06/27 19:15:21
ヌルポ

901:デフォルトの名無しさん
08/06/27 19:18:55
ガッ

902:デフォルトの名無しさん
08/06/27 19:26:11
再帰を終わらせようと思ったのにガッされたお(´・ω・`)

903:デフォルトの名無しさん
08/06/27 19:48:48
>>902
つぎはcall/ccをかませよ。

904:デフォルトの名無しさん
08/06/27 20:46:10
pythonの内胞リストで感動してきた
URLリンク(www.ibm.com)

要するにmapの拡張だと思うんだけどmapの拡張を柔軟にするって意味では
lispのmacroも同じ?

pythonの内胞リストと同じマクロって作れないの?

905:デフォルトの名無しさん
08/06/27 21:11:58
>>904
(use srfi-42)


906:デフォルトの名無しさん
08/06/27 21:13:46
リスト内包記法な

907:デフォルトの名無しさん
08/06/27 21:55:32
>>904
実用的なのは >>905 が書いてるsrfi-42だが、マクロでの実現法を
知りたいならここにあるlist-ofが参考になる。15行で内包表記を実現。
URLリンク(practical-scheme.net)

908:デフォルトの名無しさん
08/06/27 21:57:15
内包表記は複雑。あんなものは内包がいい。

909:デフォルトの名無しさん
08/06/27 22:05:00
うまいこと言うなあ

910:デフォルトの名無しさん
08/06/27 22:17:56
尊敬します!

911:デフォルトの名無しさん
08/06/27 22:47:39
Lispに入門したいけどまだ戸惑ってる僕が質問します。
みなさんはLispを使って何をしていますか?

ばかな質問だったら無視してください。

912:デフォルトの名無しさん
08/06/27 22:48:57
仕事

913:デフォルトの名無しさん
08/06/27 22:54:47
>>912
すごっ、どんな分野なんですか?

914:デフォルトの名無しさん
08/06/27 22:58:31
ふつーに、ちょっとしたデータを作ったり、ソースとかドキュメントを加工したりするのに使ってるよ。

915:デフォルトの名無しさん
08/06/27 22:59:50
912ではないが
設定ファイルのインタプリタとか
シェルみたいにインタラクティブに何か操作する言語を作るとか

916:デフォルトの名無しさん
08/06/27 23:03:09
みんな実務に使ってるんですねぇ。
CG系の目的で使ってるひといませんか?

917:デフォルトの名無しさん
08/06/27 23:03:42
よほどのことが無いかぎり、プログラムは Lisp (私の場合はCommon Lisp)で書いている。
よほどのこと、というのは、
・効率などをシビアに要求されて、他の言語でないとその要求を満たせない場合
・他の言語を使えばおそろしく簡単に(たとえばライブラリを呼ぶだけ)済む場合
・(顧客の指示など)社会的な理由でLispを使うことが許されない場合

918:デフォルトの名無しさん
08/06/27 23:04:32
>>916
レンダリング系は難しいかもしれないけど、モデリング系ではかなり使われてると思う

919:デフォルトの名無しさん
08/06/27 23:08:45
>>916
昔々Symbolicsというマシンがあってだなあ・・・
いや年寄りの独り言だ、忘れてくれ・・・ orz

920:デフォルトの名無しさん
08/06/27 23:10:04

昔話禁止しようぜ


921:デフォルトの名無しさん
08/06/27 23:11:07
R5RSは忘れてR6RSにしようということですね。わかります。

922:デフォルトの名無しさん
08/06/27 23:16:24
>>916
例えばここ見てみるといいよ。
URLリンク(www.franz.com)

923:デフォルトの名無しさん
08/06/27 23:45:50
R6RSも忘れてERR5RSにしようということですね、わかります

>>911
あなたは両手を使って何をしていますか?
(もし手の不自由な方だったら申し訳ありません。意味を汲み取ってください。)

924:デフォルトの名無しさん
08/06/27 23:51:55
>>923
> あなたは両手を使って何をしていますか?

自慰


925:デフォルトの名無しさん
08/06/27 23:56:14
>>924
片手でやれ

926:デフォルトの名無しさん
08/06/28 01:19:54
>>923
すみません、意味を汲み取れませんでした。
今はタイピングしてますね。

927:デフォルトの名無しさん
08/06/28 01:32:39
深い意味があるわけではありません。
なんか予想外の方向に展開してますが
日常生活の動作の多くに(無意識に)両手を使うように
コンピュータを使う動作の多くに(無意識に、とまではまだ私はいきませんが)Lispを使うのです。

などと書きましたが未だに3分の1くらいはBシェルスクリプトにしてしまいます:-P

928:デフォルトの名無しさん
08/06/28 02:42:44
春先辺りから変なのが常駐してるな。

929:デフォルトの名無しさん
08/06/28 03:09:44
だれかグレアムおじさんのArcを実装しようという方はおらんのかね

930:デフォルトの名無しさん
08/06/28 03:23:06
>>929
グレアムおじさん

931:デフォルトの名無しさん
08/06/28 10:53:38
>>916
ちょっと違うかもしれないけどこういうのもあるよ
URLリンク(www.pawfal.org)

932:デフォルトの名無しさん
08/06/29 14:58:24
>>916
gimpのscript-fu?


933:デフォルトの名無しさん
08/07/03 16:00:43
行列計算とplot関係はpythonで
pythonのメタ制御をlispでしたい
しかし理想の環境はいまだできず

934:デフォルトの名無しさん
08/07/03 17:32:42
それLisp必要か?

935:デフォルトの名無しさん
08/07/03 17:36:23
それPython必要か?

936:デフォルトの名無しさん
08/07/03 17:43:54
行列計算はどうなの?

937:デフォルトの名無しさん
08/07/03 17:57:20
Ypsilon Scheme System(イプシロン・スキーム・システム)はプログラミング言語Schemeの
最新規格R6RS*に準拠する実装です。インタープリタの特性を活かしてスピーディーで
インタラクティブなアプリケーション/ユーザーライブラリーの開発を可能にします。また
マルチコアCPU用に最適化したMostly Concurrent Garbage Collectionを実装することに
より、極めて短いGC停止時間と並列実行によるパフォーマンスの向上を達成しています。

URLリンク(www.littlewingpinball.net)

この会社のピンボールゲームとはMacでトリスタンやって以来の付き合いなわけだが、こう
いう方向に来るとは思わなかった。

938:デフォルトの名無しさん
08/07/03 18:00:59
Python上で動くフルスペックのCommonLispとSchemeが欲しい。(CommonLithpとかThcheme?)
OCaml上でも可。(OCSみたいなヤツ)



939:デフォルトの名無しさん
08/07/03 18:59:37
>>938
逆を作った方がいいだろうな。jpythonやiron pythonみたいにcl pythonかsbcl pythonでも
考えてみたいい。

940:デフォルトの名無しさん
08/07/03 19:05:16
PythonやOCamlが動く環境のほうが
CLが動く環境よりも多いんですよ
それにPythonやOCamlは処理系が統一されてるし

941:デフォルトの名無しさん
08/07/03 19:27:05
>>939
> 逆を作った方がいいだろうな。
> 考えてみたいい。

意味不明



942:デフォルトの名無しさん
08/07/03 19:56:15
>>938
せめてJavaがいいな
schemeではありそうだけど

943:デフォルトの名無しさん
08/07/03 20:01:56
C/C++上で動くSchemeの何が気に入らないのかが不明だが
宗教上の理由かな

944:デフォルトの名無しさん
08/07/03 20:04:53
gaucheをxrea

・仮想環境にopenSUSE 10.3/11.0 i386版をインストール
・ディレクトリ /virtual/(xreaのあなたのID)/ を作る。
・そのディレクトリの下に bin lib share ディレクトリを作る。
・gaucheのソースを本家からダウンロード&展開
・gauche-0.8.xxディレクトリに移動
・./configure --prefix=/virtual/(xreaのあなたのID)/
・make
・make install
・/virtual/(xreaのあなたのID)/に移動
・ tar cjvf gauche.tar.bz2 bin lib share
・ gauche.tar.bz2 を xrea に持っていく。
・ sshでxreaにつなぐ
・ そこで tar xjvf gauche.tar.bz2 とする。

おしまい。openSUSEにはyastからautomake autoconf など開発系のパッケージを入れること。

945:デフォルトの名無しさん
08/07/03 20:08:09
>>944
しまった、誤爆です。でもここでもいいか。

946:デフォルトの名無しさん
08/07/03 20:08:10
Python上であればPythonから簡単に呼べるという幻想でしょ。
たぶん性能が悪くて使い物にならないと思うけど。

どうせやるなら Java VM か .NET CLR 上が面白いだろうね。

947:デフォルトの名無しさん
08/07/03 20:19:03
>>943
C/C++ではGUIの仕様の統一が図れないしi386やLinux/Winのみをターゲットにしている事も多い。
JAVAは純正はポータブルじゃないしクローンは(よくなったとはいえ)まだ不完全。
PythonやOCamlは派生処理系はあるもののメインに概ね統一されてるしポータビリティもいいしGUIもある。
という理由です。
FiclやLuaみたいにANSI-Cが必要十分条件なCL or Schemeがあればそれが一番いいんですが。
(といってもGUIの問題が残るけど)

948:デフォルトの名無しさん
08/07/03 20:25:10
要はgccとPOSIXとXがある環境ではどこでも動いてよ!ってことです。

949:デフォルトの名無しさん
08/07/03 20:25:51
gcl がそれに近いかなあ

950:デフォルトの名無しさん
08/07/03 20:32:05
GCLはソースが古すぎてビルドできませんでした(古い関数が使われている?)
その末裔のECLはBoehmGCをportしたらビルドできましたけど

951:デフォルトの名無しさん
08/07/03 20:35:57
どっちにしても Python 上に作ってもまともな性能なんて出ないよ

952:デフォルトの名無しさん
08/07/03 20:39:54
Python上に作るっていうか
JavaVMにおけるKAWAとかSISCみたく
PythonVM上で直接実行されるようにすれば
CLispくらいにはなりませんかね?

953:デフォルトの名無しさん
08/07/03 20:54:24
>>947
ocamlやpython,rubyのGUIって標準はtcl/tkちゃうん?
clはltkが一応あるよ。

954:デフォルトの名無しさん
08/07/03 22:03:04
>>947
PythonやLuaの実装言語はCなんだから、
CでGUIを統一できないとか移植性がないとか言うのはおかしいでしょ

955:デフォルトの名無しさん
08/07/03 22:42:58
PythonやLuaやRubyは言語≒実装なので事実上の標準という縛りがあるから
その上で動くもののポータビリティが保たれることを利用して
SchemeやCLよりも低レベルでポータビリティを実現して欲しいんです。
いろいろな処理系を移植するのは骨が折れるので。
LuaにGUIがあるのかどうかは知りませんが
必要十分条件が明白な言語の代表として名前をあげました。
POSIXでXlibとgccがあればフル機能は無理でも標準機能はビルドできる、くらいの条件があって欲しいです。


956:デフォルトの名無しさん
08/07/03 22:47:32
欲しいものはよく判った。でも今のところ無いと思う。
性能が出なくて労力の割に面白くないから、誰も作らないんじゃないかと想像できる。
だが、やってみなくちゃ判らないぞ。>>955の偉業に期待だ。

957:デフォルトの名無しさん
08/07/03 23:06:28
>>955
ansiなscheme or CLにTcl/Tkをポートする方が楽そう。


958:デフォルトの名無しさん
08/07/03 23:30:13
GUI込みならPythonアプリはそれほどポータブルではない。

959:デフォルトの名無しさん
08/07/04 00:08:49
>>955
LuaにGUIはないが、君の言う通り「Luaよりも低レベルで」ポータビリティを実現できる
Cで書ける部分を無理にLuaで書くことはない

960:デフォルトの名無しさん
08/07/04 00:30:30
>>955
Python上で実装してポータビリティを上げるって
衝撃の馬鹿理由だな。

961:デフォルトの名無しさん
08/07/04 00:49:27
ポータビリティとライブラリを重視するのは良いと思う
性能重視は競争が激しいし供給過剰だし

962:デフォルトの名無しさん
08/07/04 01:03:14
もうすぐ次スレだな

963:デフォルトの名無しさん
08/07/04 01:15:09
ypsilon vs gauche

964:デフォルトの名無しさん
08/07/04 04:50:03
pythonはポータブルじゃないよ


日本じゃ人気がないから

965:デフォルトの名無しさん
08/07/04 07:10:54
おれは最近、仕事でpythonばっかり書いてるよ。
時々lispとの微妙な違いに悲しくなるけど、確かにlisperとしても許容できる、
良い言語だわ。ほぼどこでも動くし、ライブラリも沢山。
そのうち趣味でもpythonばかりになるかも。

966:デフォルトの名無しさん
08/07/04 08:39:27
ANSI-Cが必要十分条件だとGC書けねーよ

967:デフォルトの名無しさん
08/07/04 09:28:25
>>933-935
matlabに慣れてるからpython.numpyが使いやすい
しかしちょっと高度なこともしてみたい
全部lispでやったほうがいいのだろうか

968:デフォルトの名無しさん
08/07/04 09:28:57
>>938-939
pyffi

969:デフォルトの名無しさん
08/07/04 09:57:24
>>967
あまり融合度が高くないが、
URLリンク(clisp.cons.org)

matlabじゃないが、
URLリンク(nlisp.info)

970:デフォルトの名無しさん
08/07/04 13:08:28
ピンボールの話題がまだ出ていない件

971:デフォルトの名無しさん
08/07/04 13:09:16
ごめん。>>963見落とした

972:デフォルトの名無しさん
08/07/04 14:30:26
「事実上の標準」はTck/TkでもXlibでもなくGLUTというオチ

973:デフォルトの名無しさん
08/07/04 16:42:13
>>970
ピンボールよりメタボールの方が面白そうだなあ

974:デフォルトの名無しさん
08/07/04 22:21:52
evalでschemeが評価できるpythonとか逆にschemeでpythonが評価できるとか


975:デフォルトの名無しさん
08/07/04 22:32:26
データの互換性があると使いやすいのだろうが、LispのconsセルとPythonのtupleには
微妙な違いがあったり、symbolに相当するものが無かったり、PythonってLispのようで
Lispでないって感じだよね。

976:デフォルトの名無しさん
08/07/06 17:33:24
うわさのypsilonをコンパイルしようとしたらエラーで止まっちゃったわ。
x86_64に対応してないって書いてたわ。残念。

977:デフォルトの名無しさん
08/07/07 21:52:16
Scheme on Java > SISC
継続不完全でもJavaとのリンク強ならKawa


978:デフォルトの名無しさん
08/07/08 18:34:57
まず考えるべきことは、なぜC/C++とのリンクが弱い (と思われている) かだ

979:デフォルトの名無しさん
08/07/10 12:45:38
>>976
32bitでコンパイルすればいいじゃん。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch