[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/17 12:59 / Filesize : 125 KB / Number-of Response : 513
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Lisp Scheme Part34



1 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:37:08.66 ]
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part33
toro.2ch.net/test/read.cgi/tech/1318150738/

■テンプレ
wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その8【質問よろず】
hibari.2ch.net/test/read.cgi/tech/1309940115/

321 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/19(月) 18:58:38.20 ]
>>318 言葉の意味はとりあえず Wikipedia 見ておけばだいたいわかる。
ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3

>>320 を補足すると昔の方式の LISP のひとつには emacs lisp がある。
喩えば対話モードで
(lambda () 'hoge)
と入力すると
(lambda nil (quote hoge))
と返ってくる。
これは emacs lisp の中では lambda で作られる関数は単に「car が lambda というシンボルであるリスト」として表されていることを意味する。
静的な環境と結び付いていない。

あと、極論するなら Scheme の手続きは全て無名。
(define (x) 'hoge)
みたいに書いても、これは
(define x (lambda() 'hoge))
の構文糖だから。
名前は変数についているのであって関数の名前ではない。

322 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 06:14:08.18 ]
>>314
わからないので、やってみてください

323 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 07:04:51.44 ]
>>322
ほれ
(define-macro (cr ad sex)
(let loop ((ad (string->list (symbol->string ad))))
(if (null? ad)
sex
(if (char=? (car ad) #\a) `(car ,(loop (cdr ad))) `(cdr ,(loop (cdr ad)))))))


(cr a '((a) b c))
=>(a)
(cr aa '((a) b c))
=>a
(cr ad '((a) b c))
=>b
(cr add '((a) b c))
=>c

324 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 20:19:10.55 ]
SchemeとCommonLispは完全に時代遅れ
これからはclojureの時代

325 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 08:22:26.09 ]
Clojureは大好きだけどそんなことはないと思う

326 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 13:41:51.74 ]
>>325
どんなところがそんなことないと思うのですか?

327 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 14:30:33.31 ]
common lispとschemeのコードをシンタックス・ハイライトで色づけできる
wikiを自分のサイトに設置したいのですが、何かおすすめはありますか?
これまではgaucheのwilikiを使っていましたが、
wilikiではシンタックス・ハイライトを導入できそうになかったので。

328 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 15:12:02.26 ]
>>327
google-code-prettify なら CL や Scheme に対応してるし、 WiLiKi に導入することも簡単だよ。

329 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 15:22:44.98 ]
>>328
ありがとう。google-code-prettifyの使い方を見てみた。
javascriptとcssのファイルの読み込みはwilikiに簡単に追加できそう。
だけど、<pre class="prettyprint linenums:4">のように
pre要素のclassに任意の文字列を渡すことはwilikiではできないのでは?



330 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 16:04:46.17 ]
ここ、Wilikiでシンタックスハイライト使ってるけど、wiliki本体を改造してるのかな。
community.schemewiki.org/?scheme-style

331 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 16:11:46.88 ]
>>326
JVMやCLIのような「ホスト」環境にアクセスするのは自然な事としている所はCLやSchemeとは違うと思う
それに、共有された状態を管理する手段としてロックを推奨しないなど、まだ一般に浸透していない設計上の判断がある
その判断が良いものかどうかは別の話だけど、少なくともCからC++のように
「コンパイラを入れ替えて、多少のエラーを直せば一応移行できる。それからより良い方法を学べばいい」というわけにはいかない

俺はClojureをCLやSchemeを過去の遺物にするような何かではなく、今までも沢山あった方言の一つだと思っていて
その上でClojureが好きで、長期間続いて欲しくて、他の言語にClojureが良い影響を与えたらいいなと思う
だから「CL・Schemeは死んだ、これからはClojure」みたいな主張には頷けない

332 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 16:36:24.09 ]
>>330
括弧のネストの深さに応じて色が変わるのは
pastebinのサイトと同じっぽいな


333 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 16:40:39.59 ]
>>330
プロパティを追加したいだけなら
wiliki:format-page-content メソッドをオーバーロードすればいいんだよ。
next-method の結果から sxpath で pre を探して sxml:add-attr でプロパティを追加。
直接ソースコードを書き換える必要はない。

>>329
linenums に関しては記法自体を追加しないと無理かなぁ。


334 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 16:51:16.23 ]
もちろん、同様にメソッド追加によって pre の中身を弄ることもできるので JavaScript に頼らないハイライトも可能。
r6rs のハイライトは leque さんが公開しているコードがあるのでこれと組み合わせられると思う。
www.katch.ne.jp/~leque/software/gauche/r6rs-shtml-markup/


335 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:44:36.41 ]
>>333
ありがとうございます。
いろいろいじってみます

336 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/23(金) 01:35:41.62 ]
最悪の場合でも with-module を使えばどこへでも割り込めるのでソース自体を書き換えなければいけないってことはそんなに多くない。
でも、 internal define は置換えられないのでそれを覆う関数ごと置換えることになって面倒だからそういうときは無理せずに
ソースに手を加えた方がよいかもしれず。

337 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 10:53:21.86 ]
gaucheのfile-mtimeで取り出した時間をもとに
y/m/d形式の日付の文字列を取得するには
どうすればよいでしょうか?
rubyでいうところのこれです
Time.at(タイムスタンプ).strftime("%Y/%m/%d")

338 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 11:14:38.10 ]
sys-strftime

339 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 11:29:54.45 ]
>>338
まさにそのとおりの関数があったのですね。ありがとうございます。



340 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/03(火) 19:58:44.16 ]
directory で再帰的にファイルを探すときに、ある特定のディレクトリのみを無視したいのですが、
どうすればいいでしょうか?

Ruby の Find.prune のようなものを探しています。
doc.ruby-lang.org/ja/1.8.7/method/Find/m/find.html

341 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/03(火) 21:01:03.89 ]
>>340
処理系は?
Gauche なら directory-fold を使うのが妥当。
practical-scheme.net/gauche/man/?l=jp&p=directory-fold

342 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/03(火) 23:42:23.42 ]
>>341
SBCLとかclispとかでポータブルに書きたいです。


343 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:06:18.83 ]
>>342
weitz.de/cl-fad/#walk-directory

344 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/04(水) 00:16:01.86 ]
>>342
Common Lisp の話はなるべく Common Lisp スレへ行ってね。

345 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:24:08.01 ]
Scheme の話は Scheme スレでね。

346 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/04(水) 00:27:53.75 ]
Lisp SchemeスレとCommon Lisp入門スレってどういう関係なの?
ここはscheme専門スレなの?またはCommon Lispだけは禁止なの?
禁止なら1に書いておくべきでしょ
あちらはCommon Lispの初心者用スレじゃないの?

347 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:32:12.37 ]
>あちらはCommon Lispの初心者用スレじゃないの?
お前にぴったりじゃん

348 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:45:51.31 ]
>1
> Common Lisp、SchemeをはじめとするLisp族全般のスレです

自分も知らないうちにこの一文忘れて同じ事レスったことがある。

349 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/04(水) 00:50:46.49 ]
>>346
そこらは歴史的経緯というやつで…。 別に Common Lisp の話が禁止というわけじゃないよ。
ただ、 Common Lisp "固有の" 話は Common Lisp スレに集約した方が話が早いのであえてこっちに書かんでも、という感じ。



350 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:58:05.34 ]
複数スレチェックするのめんどいから、全部ここでいい感じ。

351 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:59:37.49 ]
Common Lispとか興味ないわ

352 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 01:49:47.60 ]
>>342
んじゃCLスレに誘導。

toro.2ch.net/test/read.cgi/tech/1330888006/105

353 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 21:12:56.59 ]
CLスレが立った経緯は・・・
昔、変なのがいたんだよ
Ruby最高とかそんなのもいたw

354 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 21:24:35.21 ]
RubyはLispの一種だしな

355 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:17:08.95 ]
>>353
comp.lang.lispで延々怪気炎を上げ続けてるWilliam Jamesさんみたいな人ですね。分かります。

356 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:29:45.60 ]
gavino もまだ暴れてるんだなスゲー。学生時代にも見た記憶あるから、10年近くtrollしてんのか。
海外のキ印は気合い入ってんな…

357 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:38:24.47 ]
ジャンルは違うが日本が誇る偉大なる日下部師も負けちゃいないぜ。

358 名前: ◆QZaw55cn4c mailto:sage [2012/04/04(水) 22:47:10.01 ]
>>357
それはどちらでみることができるのでしょうか?

359 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:36:12.72 ]
今は主にTwitterかね



360 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 04:25:53.87 ]
はつみみです

361 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 09:42:49.60 ]
ということにしたいのですね?

362 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 16:46:14.80 ]
n次元のリスト1つをつくりたいです
'(((2 2 2) (2 2 2)) ((4 4 4) (4 4 4)) ((6 6 6) (6 6 6)))
リストの内容はここでは一番外側のリストの順番に2をかけたものとします
(make-my-list (lambda (x) (* 2 x)) '(3 2 3))
このように引数を与えて上のようなリストをつくる関数orマクロはどうかけばよいですか
(use srfi-1)と(iota 3 1)をつかって(1 2 3)を作ったあとの処理が思いつきません

common lispならloopを重ねたうえでcollectを使えばなんとかなるきがするのですが
schemeの場合どこからどう手をつければいいかわかりません

363 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:10:30.94 ]
引数が何で結果を何にしたいのか
自分でしっかり決めてないからだと思うよ

364 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:11:28.49 ]
俺以外にも>>362が何言ってるのか分からない人がいて安心した

365 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:25:45.32 ]
(make-my-list (lambda (x) (* 2 x)) '(3 2 1))
(make-my-list (lambda (x) (* 2 x)) '(4 2 3))
(make-my-list (lambda (x) (x)) '(3 2 3))
の結果は?

366 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:40:54.71 ]
schene素人が作ってみた
(define (make-my-list proc l)
 (define (henna-list-tsukuruyo l x)
  (define num (car l))
  (if (null? (cdr l))
    (map (lambda _ x) (iota num))
    (map (lambda _ (henna-list-tsukuruyo (cdr l) x)) (iota num))))
 (map (lambda (x) (henna-list-tsukuruyo (cdr l) (proc x))) (iota (car l) 1)))
(write (make-my-list (lambda (x) (* 2 x)) '(3 2 3)))
> (((2 2 2) (2 2 2)) ((4 4 4) (4 4 4)) ((6 6 6) (6 6 6)))

367 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 19:27:43.96 ]
すみません
make-my-listの第一引数には一番外側のリストの順番に対して操作する関数を、
第二引数はリストをわたします。
第二引数のリストは、説明がしづらいのですが、1番目は生成されるリストのatomの数、2番目は1番目をいくつまとめるか、3番目は2番目をいくつまとめるか、という風になります

>>365
こうしたいです
>(make-my-list (lambda (x) (* 2 x)) '(3 2 1))
(
((2 2 2) (2 2 2))
)

>(make-my-list (lambda (x) (* 2 x)) '(4 2 3))
(
((2 2 2 2)(2 2 2 2))
((4 4 4 4)(4 4 4 4))
((6 6 6 6)(6 6 6 6))
)
>(make-my-list (lambda (x) (x)) '(3 2 3))
(
((1 1 1) (1 1 1))
((2 2 2) (2 2 2))
((3 3 3) (3 3 3))
)

368 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/13(金) 19:50:21.27 ]
>>367
部分的に共有構造になってるけどそれでもいいか?

(define (make-my-list p l)
(let ((n (car l))
(m (cadr l))
(z (caddr l)))
(map (lambda(x) (make-list m (make-list n (p x)))) (iota z 1))))

369 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 12:55:57.88 ]
ありがとうございます。



370 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 22:00:01.44 ]
質問です。プログラミングのコードって、Tabキーで解りやすくインデントがされますよね。

けれど、こういう掲示板にコードをコピペで張り付けると、インデントが全部消えちゃいます。

掲示板にコピペしても、インデントが残るようにするにはどうしたらいいんでしょうか。
ちなみにエディターはemacsです。

371 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 22:05:21.75 ]
気にしないでいいと思いますが
Pythonみたいなインデントに文法上の意味がある言語ならともかく
どうしてもというなら&nbsp;とか全角空白とか

372 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/16(月) 23:08:37.71 ]
>>370
このスレの住人なら emacs かそれに準ずる高機能エディタを使ってます。
それにコピペして数ストロークのコマンドでインデントは再現できます。
emacs なら C-x h でバッファ全体を選択した後に C-M-\ ですね。
なので、少なくともこのスレではあまり考えなくてかまいません。

>>371 の示す手順も掲示板のクセ次第です。
にちゃんねるでは通用しても掲示板の全てで通用するわけではないです。
見る側のブラウザやフォント指定次第では幅が合わずにやっぱり表示が崩れたりする上、
実際に実行させるために空白文字に戻す必要が生じてかえって手間だったりも。
それも数ストロークのコマンドで出来ますけど。

最近ではコードの断片を保存するサービスがいくつかあります。
そういうサイトを利用して掲示板には URL を貼り付けるといったこともよく行われています。
主なところでは、
ideone.com/
codepad.org/
codetter.com/
https://gist.github.com/
でしょうか。

各掲示板によって (にちゃんねるなら各スレごとに) だいたいの運用方法が暗黙に定着しているので、
過去のやりとりを参考にして下さい。

373 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:51:34.70 ]
Janeで見ているなら、レス番にアンカーがあればそこを右クリック
なければ選択状態にして右クリック

374 名前:370 mailto:sage [2012/04/17(火) 09:08:20.11 ]
>>372 動作確認(C-M-\)をしました。感動しました。マジでありがとう。

375 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 11:48:33.71 ]
>>370
2chでは行頭の半角スペース・Tab は何個あっても消える。

全角スペースならおk。

376 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 16:06:43.90 ]
dat上では消えてないから、専ブラで行頭空白保存する設定で使えばインデント復元できる。


377 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/18(水) 22:25:05.23 ]
Guile 2 って Windows で動かんの?

378 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 21:54:21.81 ]
Gauche0.9.3きちゃう?
これでGauche-tkも動く〜

379 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/21(土) 23:36:46.70 ]
Windows でスレッドが使えるようになったのが個人的にはかなりありがたい。
それと https 通信に stunnel が不要になったのもデカいかな。

リリースに向けた作業って地味に面倒でモチベーションを維持しにくいからそうすぐってわけでもないと思うな。



380 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 23:42:08.03 ]
まじか。Windows環境でもスレッドうごいちゃうの?ビルド環境ないんで 0.9.3 は wktk しながら待たせてもらいます。

381 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/21(土) 23:53:48.61 ]
そんなおまいらのために最新版を Windows 向けにビルドしてやったぞ。
www1.axfc.net/uploader/Ne/so/131324
Gauche-tk は入れといたけど tk そのものは別途インストールしてね。

382 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 01:08:43.25 ]
やだ…仕事はやい…
ありがとー

383 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 12:30:49.56 ]
なにこのキモイ流れ?

384 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 12:36:45.57 ]
河童のキモ流れ … 河童が肝を洗っているとうっかり流してしまいそのまま死ぬこと。 転じてキモがられて社会的に死ぬこと。

385 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 14:13:08.18 ]
ユーモアの欠片もないな

386 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 18:24:18.79 ]
すいません、質問です。
'((a b) c d)

(list (list 'a 'b) 'c 'd)
は、どこが違うんでしょうか?

387 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 18:48:39.11 ]
>>386
tips.lisp-users.org/scheme/index.cgi?%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B

388 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/28(土) 00:45:03.59 ]
>>386
C++ や Java の感覚で表現するなら前者はリテラルで後者はコンストラクタによってオブジェクトを作ってるイメージかなぁ。


389 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 02:16:59.90 ]
文字列と文字列の入った配列ぐらい違う



390 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 02:37:36.59 ]
>>389
いや、無理に参加しなくてもいいんだよ

391 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 03:11:40.27 ]
前者は処理系によっては変更不可属性を付けられてもおかしくない

392 名前:386 mailto:sage [2012/04/28(土) 08:23:46.72 ]
387みたけど、しっくりこない。
「quote を使うとリストを定数として書くことができる。」とか書いてあるけど

>(define symbol_1 '(1 2 3 4))
>ok
>(car symbol_1)
1
>(cdr symbol_1)
(2 3 4)
うーん、わかんない。symbol_1は定数なの?
(car 'symbol)をやってみると、
1st argument symbol to car not List object っていう風に怒られます。


393 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 08:39:01.76 ]
quoteは、渡されたS式をそもそもソースコードとして評価せずそのまま返す、という機能だよ

394 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 14:56:42.22 ]
>>392
CLで書いているけどこんな形で変わってくる
ttp://ideone.com/nT1Tr

quoteは読み込みのタイミングで一回だけリストを作っているけど、
listやconsなんかは評価ごとに新しいリストを作っている。

あと、もう一度symbol_1を評価してみれば分かるけど、
carやcdrはsymbol_1を変更してない。

395 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 21:03:13.31 ]
わかんない人は処理系のソースを読もうぜ
仕組みが一発でわかるぜ
このへんはLISPでLISP書いてもわかんないとこだぜ

396 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 02:10:46.39 ]
>>392
> (car 'symbol)をやってみると、
> 1st argument symbol to car not List object っていう風に怒られます。

readした後には[ car | [ symbol | nil ]]と言う二つのcons cellになってる。
[ car | [ quote | [ symbol | nil ]]]ではない。
carの引数がsymbolというシンボルオブジェクトなのだから、リストでないと怒られて当たり前。

397 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 02:51:05.97 ]
atomとlistとconsの違いも判ってないやつにquoteなんて教えても無駄

398 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 03:21:45.50 ]
うん、まあ判らないだろうなということ教えてるよね

399 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 05:15:35.89 ]
括弧で括った式
(関数 引数)
この形式は関数の適用を意味する
関数と引数は一度しか評価されない

括弧で囲った式には、関数ではない特殊形式も存在する
(特殊形式 引数)
特殊形式の引数が評価されるかは、その特殊形式によって決まる

引数の数は関数や特殊形式によって決まる

式(1 2 3 4)は、最初の要素が関数でも特殊形式でもないため、
評価するとエラーとなる

引用符の付いた式
'(1 2 3 4)は評価すると(1 2 3 4)が返る
'(1 2 3 4)は(quote (1 2 3 4))と書ける
quoteは特殊形式であり、
引数を評価せず、そのまま返すという機能を持つ



400 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 05:18:28.64 ]
(define symbol_1 '(1 2 3 4))
defineは特殊形式であり、右辺の式を評価した結果の別名を定義する
ここでは右辺の'(1 2 3 4)が評価され(1 2 3 4)となり、
symbol_1 → (1 2 3 4)という関連付けが行われる
symbol_1のようなシンボルは評価すると関連付けられた値を返す
式symbol_1を単体で評価すると(1 2 3 4)を返す

シンボルcarには関数が関連付けられており、
この関数はconsで作成された2値を格納するコンテナから、
最初の要素を返すという機能を持つ
式carを単体で評価するとその関数を返す

(car symbol_1)は上で説明した通り関数の適用であり、
symbol_1が評価され、その部分が(1 2 3 4)になり、
同時にcarが評価され、その部分が関数になる
それぞれの評価が終わるとcarの関数が適用され、
(1 2 3 4)の最初の要素の1が返る

401 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 05:27:06.74 ]
carの関数適用までが終わると、
式(car symbol_1)のすべての評価が終わったことになり、
結果を表示した後、次の式へ移るか、入力待ち状態になる
この一連の流れをread-eval-print-loop(REPL)という

402 名前:392 mailto:sage [2012/04/29(日) 14:57:46.86 ]
わかりました。すごくありがとう。

carに束縛された関数が評価されるのと同時に、
symbol_1が評価されて(1 2 3 4)が返り、

(1 2 3 4)は、carに束縛された関数に渡されるから、
>(car (1 2 3 4))
>1
となるわけね。みんな、ほんとうにありがとう。

403 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 00:07:01.81 ]
本屋で「scheme手習い」と「scheme修行」がScalaのコーナーにあったんで
Lispコーナーに移してきた。


404 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 21:13:09.57 ]
俺も分離状態にあった『手習い』と『修行』をセットにしておいた。

405 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 18:43:33.28 ]
プログラミングGaucheがscheme関連の良書だと気付かれてないのはどうすれば良いの

406 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 20:31:54.05 ]
>>405
第4部がつまんないからだろ?
その他の部分はありきたりの言語入門書と大して変わらんし…


407 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 20:55:25.75 ]
ありきたりと言うが、schemeにはまっとうな言語入門書が他にないじゃん

408 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 21:17:48.45 ]
入門書は必要ないだろ

409 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/01(火) 21:21:41.12 ]
前にも書いたような気がするが、言語そのものに関する解説はケント・ディヴィグの「プログラミング言語SCHEME」が一番まともだと思う。
このレベルなら入門者にも充分に理解できる範囲だと思うし。
が、俺はだいぶん後になってから読んだので本当に入門に適しているかどうかわかんね。



410 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 22:17:12.12 ]
「プログラミング言語SCHEME」が入門者用だと?ふざけんな!
若い頃あれよんで、あまりのストイックさに泣いたわ。

411 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 22:53:15.92 ]
今なら『Scheme手習い』も『Scheme修行』も本屋に行けばあるだろうが。

これで岩波コンピュータサイエンスの『Scheme入門』も再版されたら文句なしなのだが。

412 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 23:03:21.11 ]
岩波のcommon lisp入門は持っているけど
schemeの方はどんな感じ?

413 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 23:11:06.87 ]
>>405
半年強ぐらい前に日本語ネイティブな入門書として勧めたら、環境構築か忘れたけど何か欠けてるという指摘があった。

その時節電で止まってたオンライン版はみられる状態になってた。
karetta.jp/book/programming-gauche

414 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/01(火) 23:41:52.38 ]
>>410-411
手習いと修行は問題集みたいな感じだと思うけどな。
何もしらないところから手探りで問題を問いていく内に
Scheme への理解へも深まっている、というようなコンセプト。
それはそれで入門書としてよく出来てるいい本だと思うけど、
「言語」が前面に出てるのは「プログラミング言語SCHEME」
じゃないかという感じ。 やっぱ一番最初に読む本では無いかなぁ。

415 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 04:24:10.08 ]
>>414
俺はネットで公開してる原著の方でScheme入門したけどすんなり読めたよ。
プログラミング言語そのものが初心者という人向けではないけど
Javaなり何なりわかってる人がSchemeを扱えるようになるには平易でいい。

416 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/06(日) 22:23:10.69 ]
>>378
リリースに向けた作業が大詰めに入ってる模様。

417 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 18:40:20.76 ]
>>416
おー
msysで野良ビルドしちゃる
exeで勝手にインスコされるようなのは嫌なんよね

418 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 02:32:53.29 ]
gaucheはぜひネイティブコンパイルを実装してほしい


419 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 05:12:40.78 ]
以前、試しにJITコンパイラまでなら実装してみたけど、
保守コストとのトレードオフで採用は難しいみたいな話してなかったっけ?
ほぼひとりで開発してる上に本業もあるわけだし、時間足りんでしょう。



420 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 07:05:34.34 ]
CPUは1つじゃないからな
ARMなんかは複数命令混ざってるから
JIT専門業者がいたら丸投げした方がいい

421 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 09:17:19.99 ]
ネイティブコンパイル信仰者は、まずは既存のコンパイラをちゃんと調べて、
どういうpros-consがあるかちゃんと示せばいいのに、なんで「ネイティブネイティブ」って
うわごとのようにくりかえすだけなんだろうか。

StalinとかChickenとか既にあるんだから。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<125KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef