[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 02/01 06:02 / Filesize : 245 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Lisp Scheme Part33



1 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 17:58:58.06 ]
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part32
hibari.2ch.net/test/read.cgi/tech/1303299696/

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

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

697 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 16:32:57.47 ]
common lispとscheme(gauche)のソースを見やすくする
javascriptでできたシンタックス・ハイライトはありますか?
webでそれらのソースを見せたいので

698 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:52:28.72 ]
>>697
see demo at pygments.org/

699 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 08:55:25.13 ]
>>696
なにいってんだ?

700 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 15:22:37.44 ]
>>699
Racketで694に相当するのが(process "cat")だけど
実行してみると何処がおかしいのかわかると思うよ

701 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 00:48:18.63 ]
何言ってんだか全くわからん。

$ cat foo.ss
(define-values (p stdout stdin stderr)
(subprocess #f #f #f "/bin/cat"))
(display "aaaaaa\n" stdin)
(close-output-port stdin)
(display (read-line stdout))
(display "\n")
$ racket -f foo.ss
aaaaaa



702 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 03:34:47.61 ]
>>701
ls, top, cat hoge.log | tail -n 99 | grep abとかは、どうやるの?

703 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 10:48:07.24 ]
(subprocess #f #f #f "/bin/sh" "-c" "ls | grep ab")でいいんじゃない?

704 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:46:41.56 ]
>>698
すみません、それはpythonでファイルを新たに生成するものではないでしょうか

705 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 07:08:13.54 ]
www.1stwebdesigner.com/css/16-free-javascript-code-syntax-highlighters-for-better-programming/



706 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 08:15:50.26 ]
>>704
単独で生成もできるし、jekyllみたいなものから静的なhtml作成
もできるよ。common lisp,scheme,clojure含めて対応言語が多いので、
重宝する。705にも紹介されてるよ。

707 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 09:23:26.10 ]
環境を変更せず、お手軽にJavaScriptでやりたいんじゃないのかな。
自分もブログサービスで簡単に利用できるのを探したりした。

google-code-prettify
code.google.com/p/google-code-prettify/

なんかは、Lisp界隈で何度か使われてるのを見たことがある。
ただ、厳密に構文解析してるわけじゃないみたいなので、
何かのタイミングでハイライトが崩れる場合もあったと記憶してる。

708 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:53:31.40 ]
>>705-707
ありがとうございます。
>>707のおっしゃるとおり手軽に行いたかったのです
あげてもらったものを試してみます

709 名前:デフォルトの名無しさん [2012/01/16(月) 16:31:35.37 ]
ttp://d.hatena.ne.jp/higepon/20120116/1326674950

710 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:13:42.03 ]
ステマスレと間違えたんですね

711 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 19:28:17.79 ]
d.hatena.ne.jp/r-west/20090417/1239972722
大変わかりやすいエントリーなのですが、読んで疑問を持ちました
1.lispやschemeとycombinatorはどういうところで結びつくのでしょうか
2.ところでpaul grahamが設立したy combinatorはy combinatorの意味と何らかの関係があるのですか


712 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:39:33.32 ]
Ycombinator懐かしいな

(define (Y F)
((lambda (s) (F (lambda x (apply (s s) x))))
(lambda (s) (F (lambda x (apply (s s) x))))))

(define length
(Y (lambda (f)
(lambda (ls)
(if (null? ls) 0 (+ 1 (f (cdr ls))))))))


713 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:04:35.84 ]
>>711
2についてはpaulが答えてる。 ycombinator.com/faq.html

Why did you choose the name "Y Combinator?"

The Y combinator is one of the coolest ideas in computer science. It's
also a metaphor for what we do. It's a program that runs programs;
we're a company that helps start companies.


714 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:16:22.14 ]
>>712-713
ありがとうございます。わかってすっきりしました。

715 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 10:37:22.18 ]
Lispには歴史的価値しかない
Lispからはもう新しいものは生まれない



716 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 12:24:53.66 ]
うん、過去ログを読めない人にとってはそうだな

717 名前:デフォルトの名無しさん [2012/01/18(水) 12:40:32.37 ]
2ch監視し続けないと目に触れないようなもん
大したものじゃないな

718 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:36:39.08 ]
>>715
のお勧め言語は?

719 名前:デフォルトの名無しさん [2012/01/19(木) 01:07:41.25 ]
別に新しいの生み出さないでも、
俺一人が気分良く使えればそれでいいし。

720 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 02:51:38.27 ]
schemeで
文字列 "aabb" から同じ名前の変数に何か割り当てたい
(define aabb "some")
string->symbolで変換しても無理だったのだけど何か方法ないのでしょうか

721 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 06:39:10.99 ]
適当に加工してevalかマクロ

722 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:01:00.29 ]
関数に値を渡す時
vectorとlistは参照渡し
それ以外は値渡し

なんかすっきりしない

723 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:44:03.25 ]
Schemeに参照渡しなんて無い

724 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:58:50.56 ]
(lambda (x) (set! x))は、xが関数の中にあるのか外にあるのか、分からない
(lambda _ (let ((x (car _))) (set! x)))は分かる
パラメータを宣言するのをやめてローカル変数を宣言すればいい

725 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 13:11:18.05 ]
誰か>>724を翻訳してくれ



726 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 13:12:42.87 ]
perl大好き

727 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 13:39:15.59 ]
RnRS にも載っているように let は lambda に変換されるマクロ
ローカル変数を作ってるのは実は lambda の方

728 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 14:18:10.31 ]
(my-let ((x 1)) x)
から
((lambda (x) x) 1)
に変換するこんなマクロ一度は作るよね

729 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 14:23:54.29 ]
参照渡しなんて無いほうがいいと思うなら
引数を評価しないで渡すマクロも無いほうがいいと思うだろうな

730 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 14:56:52.91 ]
参照渡しと参照の値渡しを混同してるやつが居るな

731 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 14:58:08.78 ]
Lispは他の言語と比べたら
全くと言っていいほど役に立ってないのに
なんでLisperはあんなに威張りくさっていて態度がでかいんだろう

732 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:03:26.05 ]
↑こんな風に

733 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:03:33.38 ]
下から目線キター

734 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:05:07.77 ]
たしかにバカを相手に威張ってもなんの得にもならないし
ろくなことはない。愚かな行為ではあるな

735 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:11:48.97 ]
>>730
その理論でマクロは説明できないの?
quoteの値渡しとか



736 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:10:34.30 ]
値渡しを理解してない初心者がなぜか動かないと疑問に思う例
(define (push stack objct) (set! stack (cons objct stack)))
(define (pop stack) (prog1 (car stack) (set! stack (cdr stack))))

やりたいことはこう
(define (make-stack) (list '()))
(define (push stack objct) (set-car! stack (cons objct (car stack))))
(define (pop stack) (prog1 (caar stack) (set-car! stack (cdar stack))))


737 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:12:42.80 ]
自分の役にたって自分だけ金が儲かれば、
世の中の役になんてたたんでええわ。

738 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:58:32.60 ]
>>737
おまえもぉ〜いつかは〜世の中の〜♪、傘になれよと教えてくれた〜♪

739 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:56:03.80 ]
>>736
thisやselfを渡すOOを理解していない初心者はそういう書き方はしない
stackを自由変数にするだろう

740 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 22:56:51.52 ]
perlのshiftやjavascriptのargumentsのように外部イテレータで書くのが正解っぽいな
引数で混乱するなら戻り値を使え
内部イテレータはオワコン

741 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:44:30.82 ]
最近のコンテンツ産業はプログラミング言語の機能も扱うのか

742 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:53:55.20 ]
LISPを勉強してよかったことは、片方向リストに強くなった

743 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:56:46.62 ]
コンテナ渡し
コンテンツ渡し
コンテナのコンテンツ渡し

744 名前:デフォルトの名無しさん [2012/01/21(土) 23:28:14.88 ]
SICP taught in Python 3
www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html

SICPがPythonで学べるようになって
Schemeの唯一の存在価値がなくなってしまった


745 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:39:55.85 ]
Python3って異様に普及していないよなあ。



746 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 00:15:40.26 ]
Gauche の HEAD が Windows でもスレッドを使えるようになったお。

747 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 03:06:55.51 ]
schemeでpaipに相当する本ってないの?

748 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:50:39.85 ]
vector-set! があってlist-set!がないのは何故だろう

749 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:13:33.04 ]
R7RSにはあるぞ list-set!

750 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:17:06.57 ]
R7RSは大丈夫なの
R6RSみたくならない?

751 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:39:31.01 ]
大丈夫問題ない

752 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:46:33.01 ]
R6RSとは何だったのか

753 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 15:14:59.27 ]
一部の暴走

754 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 15:17:03.43 ]
実用重視とか言ってなかったっけ?そんなにダメなん?

755 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 15:33:41.72 ]
(set! (cadr '(1 2 3 4)) 5)



756 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 15:35:37.50 ]
Vistaみたいなもんとか

757 名前:ハンバーグ餃子 ◆8X2XSCHEME mailto:sage [2012/01/22(日) 15:59:42.38 ]
>>748
vector-set! を無いところから作るのは無理だけど、
list-set! を作るのは難しくないのでそれほど困ることは無いはず。
R5RS の時点では言語コアに入れるほどのものじゃないと思われたんじゃないかな。

R6RS ではペアの破壊は避けて欲しい雰囲気になってる。
set-car! や set-cdr! でさえライブラリの僻地に追い払ったくらいだから、
更に list-set! を追加しようとは思わないだろ。

758 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:09:40.24 ]
O(1)で済む所が全てO(N)になってしまうからな

759 名前:ハンバーグ餃子 ◆8X2XSCHEME mailto:sage [2012/01/22(日) 16:22:57.42 ]
srfi-101 があるでよ。
と思ったけど、これはまだ Draft の段階だな。

760 名前:デフォルトの名無しさん [2012/01/22(日) 16:23:16.48 ]
PythonでSICPが教えられるようになった
今となってはSchemeでSICPやるのは
時代遅れの教える側の趣味の押しつけでしかない
選択授業でやるならまだしも
必修でやるのは職権乱用だよな

761 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:15:58.88 ]
>>760 クリエイティブコモンズで公開されてることだし、てめぇで翻訳してからでかい口たたけよカスが。
翻訳終わるまで2ちゃんねるには書き込まなくていいからね。さもなくば死ねよ。

762 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:17:48.99 ]
WD先生自重してください

763 名前:デフォルトの名無しさん [2012/01/22(日) 19:18:16.48 ]
SICPは日本語訳変だし、
どこも英語でやっているでしょ。

764 名前:デフォルトの名無しさん [2012/01/22(日) 21:08:22.16 ]
Lisper教授は野球でいえば、
ピッチャーの球種がストレートとカーブしかなかった時代の強打者。
球種が増えた現代の野球に対応出来ないでいるのに居座っていて、
後進にも時代遅れの打ち方を強要している。
もういい加減引退して野球博物館に展示されるべき。


765 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:22:09.90 ]
何か最近やけに煽りに来る人多いけど、誰か何かしたん?



766 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:23:58.73 ]
脳を患った人がいるだけでわ

767 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:27:08.01 ]
強打者って褒めてるし

768 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:28:58.36 ]
モノスゴイ執念で一人でがんばってる仮説

769 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:33:45.70 ]
みんなが相手してくれるから

770 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 08:12:20.18 ]
Pythonで拡張できるエディタが普及するのはまだなの?
秀丸はLinuxに移植されないの?
>>760
「中学・高校で古典・漢文は時代遅れの教える側の趣味の押しつけでしかない」と
言っているようなもんだよなあ。
日本人が学校ネタで世代間を越えて語れるようにSchemeでSICPやるのはそういう
面でも意味がある気がするけどなあ。あとLispは文献の資産もたくさんあんだろ。
SchemeでSICPやめたのは失敗だったとあとで気づく気がする。
というか、SICPぐらい高校生のうちに読んでおけよと思うんだが。

771 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 08:55:38.97 ]
Pythonって規格もないし、後方互換を切り捨てたばかりだろ。
拡張性もschemeより低いし、数年毎に全面改訂必須になりそう。
schemeなら新技術が出てもマクロを足すだけで済む。

772 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:02:22.95 ]
最後の一文だけは妄想の産物だな

773 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:03:18.87 ]
ごめん
最後の一文てのは>>770のことな

774 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:07:01.90 ]
>>771
> Pythonって規格もないし、後方互換を切り捨てたばかりだろ。
> 拡張性もschemeより低いし、数年毎に全面改訂必須になりそう。
> schemeなら新技術が出てもマクロを足すだけで済む。

同意。

何よりもプログラミング言語を構成している基本概念(の中で静的なデータ型を除いて)を
Schemeほど学習者にとって認識しやすくしている言語は他にほとんどないんだよね。
Scheme以外のほとんどの言語は実用を意識し過ぎて最初からシュガーを纏った形であったり
概念の要素ごとでなく複合的な形でしか提供されていない場合が多い。

しかも言語の構文まで拡張する(それも普通の意味でのマクロよりももっと系統的な方法で)のを
可能にしているのはScheme以外には存在しない。

実用プログラムを書くだけならば他の言語でも良い(あるいは他の言語の方が便利)かも知れないが、
プログラミング言語とは何かを一度きちんと理解して、表面的には色々と異なる様々な言語に出くわしても
自在に応用が利くようなレベルまで深く修得するには、Schemeを学んでおくのは時間の無駄ではない。

プログラミング言語やプログラミングに関する優れた教科書でSchemeを採用しているのが何冊もあるのは
何故なのかか?という事をもっと真剣に考えるべきだし、それは偶然ではないんだよね。

775 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:11:44.65 ]
SchemeでなければCommon Lispだな。
SICPのスコープには入ってないが、LispのマクロのパワーはPythonには全く無いからな。



776 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 10:26:18.36 ]
R6RSのことも思いだしてやってください。> 規格の堅牢さ

777 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 12:40:55.95 ]
>静的なデータ型を除いて
致命的に駄目じゃん

778 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 12:45:09.61 ]
他の言語やるならSchemeなんてやらない方がいいだろ
うちの教授なんてLisp脳が酷すぎて他の言語が理解できなくなっているし

779 名前:デフォルトの名無しさん [2012/01/23(月) 12:49:32.86 ]
>「中学・高校で古典・漢文は時代遅れの教える側の趣味の押しつけでしかない」と
>言っているようなもんだよなあ。

古典・漢文はいらんだろ。少なくても時間を減らすべき。

780 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 12:52:41.60 ]
その辺は高校では選択だったから、さわり程度しかやらなかったよ。

781 名前:デフォルトの名無しさん [2012/01/23(月) 12:52:56.67 ]
>後方互換を切り捨てたばかりだろ。
後方互換を切り捨てたのは今までで一度だけだし、もうだいぶ前のことだ。
規格が分裂しているSchemeよりかなりましだろ。

782 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:01:42.34 ]
SICPはCSの教科書のふりをした
Schemeを押しつけるための教科書だろ

783 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:29:14.37 ]
>>782
Schemeは静的型付けを押しつけない。
また、文字列処理を押しつけないためにsymbolとconsを使う。
しかしquoteの分かりにくさは文字列を普通に使うよりも酷くなった。

784 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:31:44.06 ]
Schemeに代わるものがあれば使えばいいと思うよ。

構文にあれこれ気を使う必要がなく、ラムダ式や高階関数を使うことのハードルが低く、
関数型パラダイムだけでコードを書くこともできるが、データ構造の破壊的更新も
やろうと思えばできる、という言語が、あればね。

>>782 は具体的にそういう言語があるなら示してみろ。できないなら黙れ。二度と書き込むな。

785 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:35:00.31 ]
Pythonの話が出てるので普通言語ユーザな視点からの質問。

Schemeとかって手続きがデフォルトでポリモーフィックじゃない(オブジェクト指向じゃないから当たり前だが)のが
使いにくいと思ってるんだけど、Schemeを使ってる人達はそんなことは思ってないの?

(vector-ref vec i)より
vec.ref(i)の方が良いと思いません?vecもダブらないし。



786 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:35:06.47 ]
サスマン先生本人がどっかで言ってたけど、SICPの意図は、
抵抗やコンデンサ、トランジスタを集めてきてハンダ付けして実験することで
電子回路を理解するのと同じように、計算のしくみを部品から組み立てて
理解できるようにするものだったそうな。だから敢えて機能が少なく簡単に仕様が
説明できるSchemeを使ったと。最初の講義の30分で言語の説明を終えられる、
だったかな?
けれど今の工学をやるなら、バラバラのパーツを集めてくるだけじゃなくて、
ブラックボックスになっているチップやモジュールを使わざるを得ない。それと
同様に、言語でもありもののライブラリを集めて使うことが重要になってきたと。


787 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:41:59.43 ]
>>785
確かにそれひとつのみを考えたらそうなんだけど、そうやって、素敵機能を
ひとつ追加するごとに新しい構文を追加していったら、結果がどうなるかというと
だいたい見えている。

たいていの言語は、あれもこれも追加するなんてことはしない、という方針によって
カオスになるのを避けているわけだけど、Lisp 一族は、構文を追加しない、という
方針にしたということ。

>>786
これかな?
ttp://d.hatena.ne.jp/leque/20090326/p1

788 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:52:14.00 ]
最初に少し説明に長くかかっても、
言語なんてこの先ずっと使うものだから(Scheme以外は)
ちゃんとしたの選んだ方がいいよな。

789 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:53:17.07 ]
>>785
Lisp語族を使う人の中でもそういう記法を好む人もいるよ。度々見掛けるネタ。

ただ、vec.ref(i)って、(vector-ref vec i)の構文糖以上のものではないから、
大抵はリーダーマクロとか使って、リーダー部分をいじって変換するだけ。
言語仕様に入れるほどのものじゃないと思う。ライブラリや処理系のレイヤ。

790 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:54:57.31 ]
最小限ってのもあまりよくないような
みんなが好き勝手に作ってしまって
言語仕様ですらひとつにまとまらない

791 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:05:20.17 ]
オブジェクト指向のライブラリもけっこうあって、好きな文法が選べる。
デフォルトの文法に従うのではなく、問題領域を簡潔に表記できる言語を作ってから書く。
最小限の部品で言語を作るための言語。文法が多いと専用の言語を作る時に邪魔になる。
但し大量の俺々schemeができて互換性がなくなる問題点がある。
R7RSが解決する予定。

792 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:05:30.04 ]
>>785
横に長くなるのが嫌なら、手続き的に書くだけで充分に縦長になるので
その上に更にOOで幅を狭くしたいとは思わない

793 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:07:12.71 ]
>>788 >>790 そう思うあなたのために Common Lisp があるのに、何が不満だ?

794 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:10:53.58 ]
>>793
SICPの話しているんかと思ったんだけど
SICPにCommon Lisp関係ないしょ

795 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:13:03.24 ]
アホはひとつしか言語が使えないのか。
分野によって使用言語を使い分けるのが常識だと思うけど。
言語の文法は優劣でなくて選択で、ある点で有利な文法は他の点では劣ってるのが普通。
言語の作り方を見せるという点でscheme以上の言語はいまのところない。



796 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:16:12.50 ]
うちの教授はLispしか使えんぞ

797 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:22:53.73 ]
SICPだから言語の作り方でなくて、計算の基礎理論か。
それにSICPはschemeの教科書ではないよ。
あれはCSの教科書。schemeの理由は上にあるように、CSを教える用途に優れてたから使っただけ。

798 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:36:25.38 ]
今ならOcamlとかHaskell使った方がいいよね

799 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:38:47.94 ]
S式ならね

800 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:49:33.45 ]
>>787
Lispは文法の純潔さを選んでいるわけですね。

>>789
あくまで個人的な印象だけど、メッセージ送信の文法は構文糖以上だと思うな。
名前空間も絡んで来るし。

>>791
確かに選べるけど、それらが役に立つのは自分で新しくオブジェクトを書くときか
その文法が使われているライブラリを利用するときだけで、
既存のデータ型を好きな文法でシームレスに扱える訳じゃないから
あまり嬉しくなかったりする。

>>792
長さは置いておいても、意味が同じ手続きをプログラマ側で使い分けないといけないのが
面倒に感じるんだよね。

801 名前:785 mailto:sage [2012/01/23(月) 15:03:18.43 ]
>>789
ちょい追加。個人的な印象ってのはよくない。

vec.refからvector-refに展開するにはvecの型と対応する手続きを知ってないといけないから、
静的にはできないし構文糖とは言えないんじゃないかな。

802 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 15:46:58.18 ]
pythonのnumpyに相当するものは欲しい
行列計算や数値計算の枠組みを共通化してほしい

803 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 15:49:49.77 ]
ついでに
>>618


804 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 16:08:39.28 ]
共通化よりも変換だ
unicodeとiconvのどっちかを捨てろと言われたらunicodeを捨てる

805 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 16:20:16.28 ]
その二つを比べてどうする



806 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 16:33:45.07 ]
>>800
端折り過ぎたというか、言葉が足りなくて色々考えさせたみたいで申し訳ない。

メソッドのディスパッチとか、そういった途中経過も勿論含めての話。
オブジェクトとメソッドへの引数を伴った、単なる手続きの呼び出しと、
最終的に等価になるのは同意してもらえると思うんだけど、どうだろうか。

それで納得してもらえたら、あとは>>789の最後の部分に続く。

807 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 18:38:29.18 ]
>>802
ベクトル・行列演算ならBLAS
連立一次方程式ならLAPACK

とFotran由来の共通規格があるじゃないか

808 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 19:24:22.02 ]
>>779
> 古典・漢文はいらんだろ。少なくても時間を減らすべき。
減らさずに土曜日授業もやればいいんだよ。

生物学は物理学との選択で学べず、地学は選択すらできなかった。
大学受験予備校化や実用主義って学問をやる上で邪魔な存在だよ。

実用主義に走りたいなら義務教育が終わったらやる気や才能ある奴が働きやすいようにしたらいい。
就職予備校化している大学は専門学校って名前を変えればいいんだよ。
>>786
なんか作ろうと思ってマイコン関連のスレにずっと常駐しているけど、
ブラックボックスになっているチップやモジュールは好まれず、仕様
公開とか、色々とホワイトボックスになっていないと好まれないじゃん。
オープンなAruduinoがあるけど、どういう位置づけなの?

あと具体的にブラックボックスのモジュールってどういうの?
> 言語でもありもののライブラリを集めて使うことが重要になってきたと。
これってSchemeの得意分野じゃないの。
>>788
そりゃあ、言語選びはもの凄く大事でしょう。
習字の二度書き禁止みたいに無駄に何個も覚えるもんではないからね。

シェルスクリプトbashを覚えちゃったけど、kshを覚えたかったなあ。

809 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 19:30:53.37 ]
MSが作ったから馬鹿にしてたけど
PowerShellが以外とよかった

810 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 21:12:30.80 ]
>>808
ブラックボックスって言い方が悪かったか。仕様は公開されてるけど、使う時に
チップの中の電位分布の変化を意識したりしないでしょ。ディスクリートで
組む時のような意味では。インタフェースと定格と限界さえ理解してれば、
中身はブラックボックスとして扱っても良いってこと。

SICPの文脈だと、具体的には、MITでは電気電子情報の学生は初年度に
ロボットを作らせることになったのね。そのくらいの複雑度になると、
全てを把握するってのは無理で、出来合いのユニットのインタフェースを
理解して目的に合わせて使いこなしてゆくってことが重要になってくるって話。

> これってSchemeの得意分野じゃないの。

PythonのライブラリとSchemeのライブラリの量を比べてみれ。
Schemeが教育上の効率(言語の説明が省ける)で選ばれたのと同様、
Pythonが教育上の効率(使えるライブラリが既にたくさんある)で選ばれるわけさ。

この現実に不満があるなら、Schemeのライブラリを同じくらい充実させるしかないねえ。

811 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 21:30:04.88 ]
SICPをSchemeで教えるかPythonで教えるかって話をしてるところに、
SICPを教えるかライブラリ利用云々を教えるかっていう、関係ありそうで全然別の話を持ち込んでる人が居ますね

812 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 21:36:19.80 ]
何ヶ月も学習するわけだから
最初にやるSchemeとPythonの言語の大きさの差なんて誤差のうち
むしろ一般人には規模が大きくてもPythonの方が楽に学べそうだ

813 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 22:43:40.59 ]
全員が高校卒業までに体系的にSchemeを学ぶ必要はないけど、独学でやり込んで来てくれと
いう話じゃないの。
Pythonを一から教えるなら一年かかると思うし、半年で教えるなら色々と前提条件がつくんじゃないの。

MITのロボットの話だって事前に設計図を読めて書けて安価なマイコン・コンデンサ・モジュールを
組んだりとか、してきてねってことじゃないの。やっていないと物凄い苦労するよって。
人権無視で長時間拘束して大学で4年間教えていいなら教えられるけど、人権ありで4年間だと何も
教えられないんじゃないの。
>>812
なんで楽なのにPython3って普及しないの?
Python3.1になったらみんな使い始めるって計画じゃなかった?
今、 Stable release 3.2.2 / September 4, 2011; 4 months ago (2011-09-04)だよ

Pythonに思い入れがなく、ただ覚えやすいという宣伝文句にひっかかって使い出したに過ぎ
ないんじゃないのか。教祖のGuidoが3使えって言っているんだら3使えよ。
教祖に背くと地獄に行くぞ。

814 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:11:51.34 ]
まだやってんのか

815 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:13:15.55 ]
>811
>787 あたりみるとSICP書いて教えてる本人がいってるんじゃね?



816 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:22:31.56 ]
MITはライブラリがないからScheme使うのやめたってことなのか

817 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:41:14.71 ]
sussmanさんの話だとSICPをやめたのは時代遅れだからで
Schemeをやめたのはライブラリがなかったからか

818 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 00:25:52.86 ]
古い言語は捨てられ新しい言語が次々と作られる
一方、ライブラリは足りないから古いライブラリは生きのこる

819 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 00:51:48.31 ]
>>818
> 古い言語は捨てられ新しい言語が次々と作られる

かくして世の中は思い付きで作られたポッと出の出来損ない言語とバグだらけの処理系だらけになる。

820 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 01:05:05.25 ]
出来そこないの処理系の多さではSchemeがダントツでしょうな

821 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 01:42:18.24 ]
sussmanって人SICPの著者?

822 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 02:04:31.01 ]
>>818
でもLispにはライブラリがないから、捨てられるね
だれか、QtをSchemeにバインディングしてくれないかな

823 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 04:25:26.26 ]
Qt程度ならSchemeで実装すりゃいいじゃん

824 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 06:55:28.14 ]
>>820 はぁ?
そもそも仕様ができそこない、というゴミ言語が山ほどある時点で、
Schemeがダントツとかありえません。おまえの脳みそが出来損ないw

825 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 07:00:03.59 ]
Schemeのマクロだけを詳しく噛み砕いて解説した本出した
ら売れるよ



826 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 07:32:29.79 ]
ライブラリの具体例がUIというのはすごいな
全然具体的じゃないがいかにもありそうな話だな

827 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 09:15:33.73 ]
問題の切り分けができない負けず嫌いが教育を語る

828 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 09:17:43.99 ]
>>827
救世主現る!
解決お願いします。


829 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 09:45:11.42 ]
>>824
仕様ができそこないがどんな意味で言ってるのかわからんが
とりあえず実装数の多さじゃSchemeはダントツだな次点はJavascriptか



830 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 10:33:03.39 ]
みんなで処理系ばかり作っても意味ないだろ
ライブラリ作れっての

831 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 11:02:53.14 ]
処理系向けのテクニックが開発されていく言語というのがある。
そういう分野では処理系たくさん作られることが重要。

832 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 11:18:26.33 ]
最近の処理系向けのテクニックってどんなんがある?

833 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 14:00:49.69 ]
少なくともRacketはライブラリ充実してるぞ

Chikenは既存のC++ライブラリをくっつけやすいから
違う意味で充実している


834 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:45:56.76 ]
racketは名前が駄目だわ

835 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:52:31.82 ]
「ライブラリが充実」で想定しているレベルに齟齬があるような気がする。

本業がプログラマでなく別の専門を持っている人たちが書いたようなもの、
生物屋さんがゲノムデータベースを簡単に検索して実験データと付き合わせるために
作りましたとか、経済学の人たちがセンサスの情報を統計処理しますとか、
言語学で文献のデジタル化をやっててその解析に使える便利ライブラリですよとか、
そのへんの層の厚さなんだよね。決め手になるのは。Schemeにそれが無いとは
言わないけれど。その分野の専門でない人間が聞き齧り、読み齧りで書いた
ライブラリって、専門の現場のフローに合ってなくて使えないこともままあるし。
現場の人が現場の事情に合わせて書いて、それが蓄積されてるってのはでかいよ。

CS教育の話をしてるんだから関係ないと思うかもしれないが、研究にせよ開発にせよ、
今は別の分野の専門家とコラボしてソフトウェア工学を使ってその分野の問題を解決
する重要性が大きいし、今後もそっちが大きくなる一方だから。



836 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:57:02.23 ]
日本の大学では
インタプリタの作り方教えて
リスパーの数を増やすことがCSだから

837 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:17:03.97 ]
そういえば俺の大学には記号処理という名のcommonlispの授業があったな

838 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:20:06.29 ]
つか別にインタプリタの作り方をやらなくて良くなったってわけじゃなくて、
メタサーキュラーインタプリタくらいは基礎教養としてスタート前にやっといてくれ、って
くらいの話だと思う。

おいらは自分で何か書くならLispだし、Lisperが増えて欲しいとも思っているが、
だからこそ「それLispにもあるよ」ってタカをくくってる意見には賛同できない。


839 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:21:37.24 ]
MITの学生は入学前にメタサーキュラーインタプリタ知っていると?

840 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:31:59.82 ]
知ってる学生もいるだろうし、知らなかったら1ヶ月で詰め込める。
web.mit.edu/alexmv/6.S184/

てか大学の実験や実習なんて教わってないことだらけで、そんなのは自習するのが前提でしょ。
俺は日本の大学だったけど。

「スタート前にやっといてくれ」はちょっと変か。「講義でやらないけど知らなかったら自分で
やっといてね」くらい。

841 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 17:16:07.16 ]
chez schemeの開発者の一人が書いた本(mit press)らしいけど、
読んだ人がいるなら感想を聞きたい

The Scheme Programming Language, 4th Edition www.scheme.com/tspl4/

842 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 17:59:11.32 ]
>>835
その辺の層の厚さが一番あるのはRとperl
pythonは正直いまひとつ 劣化matlab


843 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/01/24(火) 18:59:38.06 ]
>>841
日本語版 (3rd だが) なら読んだことがある。
SICP や Little Schemer と違って、 Scheme の言語機能の解説が多くを占める。
C++ にとっての `The C++ Programming Language' みたいなもの。

4th では R6RS を前提とした内容に大幅に改定されているはず。


844 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 19:05:02.20 ]
>>835
非本業プログラマはCL一択でいいと思うんだけどね。gccに匹敵する速さだし、
REPLでelispとも親和性が高い。
>>842
PerlってRみたいに統計関連のツールって豊富なの?
Perlでやると遅くてメモリ食うわで最悪な選択な気がするんだけど。

845 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 19:37:11.83 ]
>R6RSを前提
えーー



846 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 19:38:49.24 ]
R6RSってR5RSと比べて全体的にどんな感じで変化した(させた)んでしょうか?

847 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 19:40:16.84 ]
CLは美しくない

848 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/01/24(火) 20:17:45.36 ]
>>846
色々あるけど、モジュール化をどうするかが一番大きな議題だったように思う。
結果的にライブラリという概念を導入した。

# それさえ出来れば後々の規格改定で機能を追加することになっても、
# ライブラリを分けて共存を図ることもできるという思惑もあったみたいなのに
# R7RS では仕組を変えようとしてるので、おまいらもちつけと言いたい。
# しかも新しい提案も R6RS と劇的な差があるわけでもないし。

それとマクロシステムが拡張されて非健全なマクロ等も書けるようになった。
マクロで問題になる、マクロ展開時にどの環境を使うかという点はフェイズの概念を導入することで解決した。
フェイズはライブラリ単位で決まるので、上述のモジュール化の仕組みとも密接に関連している。

レコードや文字列ポートなど、多くのケースで便利な機能がちょろっと追加された。
R5RS までは小さい言語コアだけ決めて残りは SRFI や各処理系の裁量にお任せという感じだったのが、
ここへ来て方向性が変わった感じがする。

細かいことは↓を参照
practical-scheme.net/wiliki/wiliki.cgi?R6RS%3a%E5%A4%89%E6%9B%B4%E7%82%B9

849 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:13:32.52 ]
CL、Scheme(R5RS)、Scheme(R6RS)、Clojure
利用者の割合はどんなんだろ

850 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:14:06.24 ]
>>841
3版と4版を読んだけど、無難な言語解説書。
深い事は書いてないから、なんたらハンドブック系の価値。
3版なら無料で読める。
www.scheme.com/tspl3/

>>842
Fortranも忘れてはいかん。科学屋さんが大量に書いてる。
基本的に専門分野ではRやFortranみたいな特化された言語が使われてる気がする。

851 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:24:53.98 ]
???
4版も無料で読めるような気がするけど
気のせい?

852 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:26:23.93 ]
あとでFBIの職員が集金に来ます

853 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:31:12.71 ]
>>851
ごめん、3版しか使ってないから忘れてた。
本文読めるのなら質問しないで良いじゃないか・・・。

854 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:43:30.92 ]
>>847
チンコはデカい方がいいだろ。
emacs子と親和性高いのは重要だよ。

855 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:13:28.44 ]
>>835
> CS教育の話をしてるんだから関係ないと思うかもしれないが、研究にせよ開発にせよ、
> 今は別の分野の専門家とコラボしてソフトウェア工学を使ってその分野の問題を解決
> する重要性が大きいし、

応用プログラムを書くのとCSを専門として学ぶというのとは目的が全く違う。
数学で確率論やルベーグ積分を学ぶのと保険のアクチュアリーになるのが全く違うように。
今のCSは応用に向いた教育ばかりになってしまっていてCSを専門に学んだはずの人が
趣味や独学でプログラミングに上達した人と大して質的な差がなくなっている。

応用としてのプログラミングなんてものは、パソコン1台あれば専門教育なんて受けなくても勉強して身に着けようと思えば着けられるんだよ。
だって、プログラムを書くだけならば必要な知識はカタログ的な平板で雑多かつ多量の知識(ライブラリとかAPIとかね)なんだから。

そうすると、CSの教育を専門的に受けたというアドバンテージをどこに求めるのか、と言えば
体系的な知識、例えば雑多な様々なプログラミング言語を構成している基本概念やそれらの間の関係をきちんと理解しているとか、
それに基づいた様々な技術(プログラム解析とかね)を体系的に身に着けているといった点に求める事になる。

プログラミングに限らず他の分野でもカタログ的な知識は下手をすると素人マニアの方がプロよりも上だったりするわけだ。
例えば鉄道ヲタクの連中は、△△電鉄の3000型のブレーキは初期型は××製だったが後期型車両からは○○製になり
その結果として制動能力がどれだけ上がって云々なんてのを知っていたりする。下手をすると当の△△電鉄の関係者や
その3000型車両を設計・製造した車両メーカーの技術者よりも型番なんかに関しては詳しかったりする。
だけど、そんな知識を持っていても、その鉄ヲタは電鉄会社の整備主任も車両メーカーの設計技師も務まらない。
何故ならば、彼らに必要な知識は体系的なもの、つまり(科学や)工学だからだ。

今のCS教育は同じカタログ知識の教育に偏重していると思う。これでは素人プログラマと変わらない人材しか育てられない。
Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。だからCS教育に向いているんだ。



856 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:21:31.15 ]
>Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。

これLisperの主観でしょ

857 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:29:06.45 ]
今の時代に大学でしか学べないCSって何があるの?
むしろ大学に行くと教える側の専門に縛られたりするんじゃね?

858 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:31:27.55 ]
その大学で扱っている専門を知った上で入るならいいんだけど、
大抵の受験生は自分が受かりそうな中で偏差値が高いとか、
家から近いとかで大学選んでそうだし。

859 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:50:16.59 ]
>>856
どういうことなんだろうな、Schemeだけで言語概念が云々ってのは。
lispが全てS式だからとか、再帰処理が構文解析器とかにマッチするとか、そんなん?
プログラミング言語論の授業では特定の言語に拘らず色んなパラダイムを紹介されたけどねえ
それと実装は別だな。特別に指定されない提出物なら全部pythonで書いてる
楽だから。何より楽だから。
matplotlibも便利でエクセルなんか使わずに結果をプロット出来るし
まあ他の言語もgnuplotとか使えるだろうけどmatplotlibのが楽

860 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 03:47:33.62 ]
は?抽象構文木を直接扱って、いかなるパラダイムでも実現できるのは、現状Lispしかないだろ。
楽なのが良いならPerlを使うべきだろうな。ライブラリがダントツで、人為的な強制もない。
一つの言語で全て出来るという幻想を持ってるようだけど、長く続けてると言語処理系やOS等の下位層を直接弄る事態になるから。
複数の言語が出来て当然だから。年に一つは新しいプログラミング言語を憶えるべき(特にパラダイムが全く異なる言語を)だから。構文抽象というパラダイムはLispにしかないから。

861 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:00:32.63 ]
誰が、一つで全てなんて幻想を持ってるって???まったく、LisperとPerlerがそうなだろうなあ
最も一つに拘ってるのがLisperだからな、初めから矛盾してる
指定されなければpythonつってるのに、それすらも読めないのかよ
Cを指定されることが多いわ。こだわりが無いからpythonなんだよ
お前みたいな頭がダイヤモンドより固い奴が、完全に思考停止して
毎年プログラミング言語を意味もなく覚えたり、意味もなく弄って何かやってるつもりになってると思うと頭がいたくなるわ
プログラミング言語はツールだろ。いや、お前にとってはオナニーの道具なのかもしれないけどさ
必要に応じて使い分けてるだけなんで、ただやることもなくプログラミング言語の中をウロウロしてる浮浪者に何か言われる筋合いはないです

862 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:14:03.09 ]
長文はやめて3行以内に分けてレスしよう
まるで人が多いかのようにみえるよ!

863 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:15:19.05 ]
議論なら良いけど、喧嘩なら他所でやってくれないかな。
自分の常駐してるスレでそういうのやられたら嫌でしょ?

864 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:44:02.56 ]
Lisperが持ってる「見下し」というスペシャルスキルによって、Lispの実のない権威は支えられている
全てのパラダイムが実現できても、実際のプロジェクトにはほぼ使われない
Lisp万能論車の妄想に付き合うのは面倒だが。少なくとも一般人は自由を強いられたいとは思ってないよ
プログラミング作法があるのならそれに合わせたいの。趣味的な誤差でもね。特に見やすさは強制でなくても重視している、残念ながら。

865 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:50:45.36 ]
必要に応じて使い分けるなら、構文を知るためにはLispが便利なのも分かるだろ。
一年に一つの言語は「達人プログラマ」だよ。もちろん読んでるよな。

最初から議論じゃなくて喧嘩だろ。未踏に落ちたか知らないけど、変なLispアンチ野郎との。



866 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:00:04.25 ]
作法でなくて人為的に一部の操作をやり辛くしているのが問題だと言ってるんだよ。
書きたい事の足を言語が引っぱるの、しかも実装の必要でもない作者の主義とやらで。
Windozeと同じく一般人がやりたい事はやり易いけど、深い事をやろうとすると足を引っぱろうとする。
実際のプロジェクトに使いたいならscheme以外の言語をどうぞ。CLとかどうでしょうか。あるいは自分が頑張ってschemeのライブラリを書いて下さい。R7RSの議論に参加するのも良いのではないでしょうか。
但しLispのみが構文抽象を扱える重要な言語であるという事実は変わりません。

867 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:00:36.66 ]
もちろん最初から今現在に至るまでずっと両方を邪魔に思ってる。
言わせんな恥ずかしい。

868 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:04:32.64 ]
いや無批判に引用すんなよ。一年に一つの言語なんて馬鹿の極み
それくらいも分からないの?本を読んでも意味をなしてないね

だからさあ、構文を知るためにとか大袈裟なんだよね。噴飯物だよ。それも何かの本の引用なの?
Schemeは書けるけど、別に構文を知るためにSchemeを勉強したわけでもなければ
Lispを見たことなくても構文の勉強は出来るし。そうしてる大学も多いだろ

869 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:06:07.82 ]
邪魔らしいので私は消滅、さらばだ。

870 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:09:23.51 ]
>>866
Lisp至上主義の成れの果てだな、視野が極端に狭い

871 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:11:24.33 ]
構文を知るためだけの言語

872 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 07:24:03.06 ]
むしろ構文が1種類しかない言語なんだが

873 名前:デフォルトの名無しさん [2012/01/25(水) 07:47:19.29 ]
Lispは重要な言語じゃないだろw

874 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:21:19.67 ]
わかった。
見下されたい奴は並べ↓

875 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:39:08.59 ]
同じ括弧に見えるけど構文は1個じゃないんだよ



876 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:43:17.70 ]
先頭にあるシンボルを解決した結果が関数かマクロかによって、S式(リスト構造)の
解釈(インタプリテーション)が変わるだけであって、S式を表現するための構文は唯一だ。

あとはアトムのリテラルの記法がいくつかあるだけで。

877 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 09:05:18.84 ]
言語の話をしてるんじゃないの?
ご自分で言語なんだがーつってるのにw

878 名前:855 mailto:sage [2012/01/25(水) 11:36:40.67 ]
>>856
> Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。
>
> これLisperの主観でしょ

違います。
ついでに言えばSchemeと他の大多数のLispとは上の一点に於いて全く違います。
ほとんどのLisp(典型はCommon Lisp)は基本的な言語概念が見えにくくなっています。
実用を重んじて言語設計された結果として、あまりにも余分なものや複合的なものが多いので。
(抽象構文木を直接的に表現できるデータ構造を基本データとして持っているという点はもちろんLisp族すべてに共通ですが)

SchemeはGuy Steeleの若き頃のMITレポートの数々を見ても分かるとおり、それまでの言語概念を突きつめて考察した結果から
可能な限り単純な要素概念だけを言語としては提供して、プログラムを書く側はそれらを自在に組み合わせられるようにする
という言語設計哲学に基づいて言語仕様が作られました。その点では他のLisp族言語よりもAlgol 60やAlgol 68の精神を引き継いだ言語です。
(Revised^6で台無しにされてしまいましたが)

Schemeの開発者たちがAlgol 60のシンプルで例外の少ない言語という精神を引き継ごうとしている事は、Schemeの言語仕様の
タイトルにも表されています。

RubyにせよPythonにせよ、もっと他の言語にせよ、実用で広く使われるのを狙って作られた言語は、Scheme以外の他のLisp系言語と同じく
言語概念が基本要素でなく複合的であったり様々なシュガーで最初から修飾された形でプログラマに提供されているケースが多く、
基本要素概念を単独で用いたいと思うと逆に回りくどい書き方をせねばならないようなケースがしばしばあります。
そこがSchemeとは決定的に違うのです。

Schemeは、少なくともRevised^5までは実用よりも言語の基本要素概念を学び理解する為の言語として言語仕様が策定されて来ました。
だからこそ、実用的な構文は最初からは入れずに体系的な構文拡張の方法を導入して、「シュガーが欲しければ自分で好みの言語に仕上げなさい」
というスタイルで実用側からの言語仕様拡大の圧力に対応して来たのです。

856のような人はSchemeをきちんと勉強した事がなく言語の基本要素概念とは何かを真剣に自分で考えようとした事がないのでしょう。



879 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:44:40.41 ]
>>844
CLでgccなみに高速プログラム作るめんどくささは
cで最初から作った方がましな感じ

880 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:48:28.76 ]
SchemeがLex/Yaccでどんな言語にも変換可能なら
あらゆるアルゴリズムをSchemeで書く有用性もあるのだけどねえ

881 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:50:54.29 ]
>実用側からの言語仕様拡大の圧力に対応して来たのです。

対応できてないから廃れてんだよ

>言語の基本要素概念とは何か

その基本概念も絶対的なものじゃないでしょ

882 名前:デフォルトの名無しさん [2012/01/25(水) 13:17:10.43 ]
>>881
最後の行は内容ある反論できずに相対主義持ち出して議論から逃げた典型だなw

883 名前:デフォルトの名無しさん [2012/01/25(水) 13:45:30.40 ]
Schemeが廃れた原因って10年ちょい前からのプログラミング言語論とかプログラミング論教育の軽視だろ
ACMのカリキュラムでもその手の科目が消えるとかインディアナのFelleisenとか騒いでたし
ACMのカリキュラムも881みたいな
知ったかプログラマに合わせたってことだろ

881も自分に内容あるって言いたきゃ
Schemeとは全然ちがうけど
同じように見かけもフォーマルなセマンティクスも単純な
コンセプトや構文だけで構成されてる
実用言語の具体例あげろよ
878の主張は実用言語は実用めざすから否応なしに複雑になっちまうってことだろ

884 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:35:29.21 ]
言語の基本要素概念とはなんなのか?
まずは855以外の人に聞きたいな

885 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:42:51.26 ]
>>884
おおざっぱだけど言語仕様と言語の基本要素概念は同じものっていう定義でいいだろ。



886 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:50:17.74 ]
>>885

>言語概念が基本要素でなく複合的であったり様々なシュガーで最初から修飾された形でプログラマに提供されているケースが多く、
>基本要素概念を単独で用いたいと思うと逆に回りくどい書き方をせねばならないようなケースがしばしばあります。

855の人の意見だと違うものだと取れるけど

887 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:18:04.18 ]
コレはアレから導出できる、みたいなのを突き詰めていった時に
最後に残る要素はなんだろうみたいな話では。

888 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:31:03.57 ]
最後に残る要素は何?

889 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:37:32.86 ]
Lispの簡易実装を読んだらJavaScriptの動作が腑に落ちた。
てかJavaScriptじゃなくてLispにしてくれたらよかったのになあ。

つかHTMLがS式だったらよかったのになあ(笑

890 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:38:41.00 ]
>>888
愛だろ、愛

891 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:40:58.82 ]
>>889
世の中の人が欲しているのは
DartとかCoffeeScriptでLispではない

892 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:48:34.55 ]
(define (f) 3)

int f(void) { return 3; }
は意味論的には同じだけど、
(define (f) 3) => (define f (lambda (x) 3))
で、これはSchemeがCにない無名関数という基本概念要素を持っている。
とか
(define (f x) x)
をCでやることはできない
これはSchemeがCにない動的型付けという基本概念要素(?)を持っているから、とか?

言語仕様のなかでユーザーが利用できる概念のうちsyntax sugarでないもの?
で、Schemeの基本概念要素は標準的なな言語が持ちうる概念を網羅している、という主張?
ちゃんと考えると(怪しい)論文ができあがりそう。

893 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:51:23.81 ]
仕様が50ページだから基本要素概念とはなんなのかって突き止められるし、実感できるけど。
www.unixuser.org/~euske/doc/r5rs-ja/r5rs-ja.pdf

仕様が500ページあると精読するだけで何日もかかるし、実感するには何ヶ月もかかるし、
全部突き止められるのか、怪しい。実装をみるとなると500ページに相当するコードも
読むハメになって、ゲロ吐きたくなる。そして言語の再実装をする奴ほとんどいないだろ。

894 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:55:05.65 ]
実用言語を題材にしても全部の仕様を扱うわけじゃないでしょ
Ocamlのサブセットのmini-Ocamlはたった2000行だっていうし

895 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:03:26.90 ]
処理系実装時のコード量の話なんてしてないのに



896 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:05:51.84 ]
>>895
>実装をみるとなると500ページに相当するコードも
>読むハメになって、ゲロ吐きたくなる。


897 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:14:50.51 ]
>>894
7行スレに3行でLispっぽいものがあがってたけどw

898 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:22:16.92 ]
そんなこと言ったらLispでそのままeval1行じゃん
Camlのサブセットも似たような事をしてる
そういうズルを見て言語を理解したと言えるのかよ

899 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:37:27.53 ]
ルールが一個というのは馬鹿らしいが、ちなみにLispのBNF記法
cui.unige.ch/db-research/Enseignement/analyseinfo/LISP/BNFindex.html

なるほど確かに小さい
このサイトにあるJavaや、Python公式ドキュメントに置いてあるものと比べるまででもなく
根本的に少機能なんだよね。これで全ての機能を実現出来ると反論すかも知れないが
そんなの他の言語でも言えること。結局これが実装は出来ても実用は出来ない理由
そもそもプログラミングする上で(Lispでも)仕様を全部読む必要なんていない。ゲロ吐きたくなる

900 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:42:54.49 ]
BNF記法がなくてコードが仕様の言語とかあったな

901 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:43:27.91 ]
Schemeはlambdaが多機能・高機能すぎて細かい所でネックになる印象

902 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:44:16.12 ]
>>893
その50ページは言い換えれば客寄せパンダ
Scheme特有の概念を普通に説明したら数倍の分量にはなるだろうし
平易な言葉で書き直せば500ページ超えも夢じゃない

903 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:49:07.44 ]
BNF見ても言語は理解できない
C++の例外だけで本になるように
継続だけで本になる
マクロだけで本になる
末尾再帰だけで本になる

904 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:49:11.93 ]
>>900 parse.y を読んだこともない馬鹿です、って自白しなくていいのにw

905 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:02:55.57 ]
parse.yで対応できるのは簡単な文法だけ
いまの流行りは手書きだろ



906 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:05:17.97 ]
LISPはパースとかそういう「どうでもいい部分」をほぼ省略できるのが魅力なんだよ

907 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:08:10.24 ]
>>906
言語を使う側からしたら関係ない話だな

908 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:15:05.09 ]
それが言語の仕様読み解くのに関係してるって話だろ
ちょっと前ぐらい読め

909 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:31:40.03 ]
schelogでパースしようとしたら無限ループから返ってこなかった
仕方ないのであきらめた

910 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:35:14.97 ]
>>899
> そもそもプログラミングする上で(Lispでも)仕様を全部読む必要なんていない。ゲロ吐きたくなる
仕様を全部読む必要ないと言うけど、一つの言語を体系的に深く理解して、言語
とはどんなものなのかとか、どういうのが作れるのかとか、ある程度の言語のイ
メージを捉えているから新しい言語でも判断できる話でしょ。

チュートリアルに沿って学習したり、雑務をこなすためにちょっとした雑多な処
理を書いて言語を理解するアプローチも大切だけど、概念を理解してトップダウ
ンで組むのも言語の理解が進む。
>>902
それだと500ページの仕様の言語が5,000ページという話になるじゃん。
pg御大が数学の論文を読むのには時間がかかる。それは一個一個が表現力が豊か
という話で数式とはそういうものだ。

911 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:45:40.04 ]
BNFで読み解ける言語仕様って構文レベルでそ。
>>899のBNFみて分かることって、
LISPって括弧がいっぱいあって入れ子になってるんだなーぐらいじゃん。

912 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:59:30.75 ]
LISPの失敗
・S式をXMLみたいに標準化しなかった(分派ごとに微妙にバラバラ、慢心、環境の違い)
・種類が多い割に今風の静的型とか型推論とか型方面が思考停止状態
その他の欠陥
・括弧がいっぱいあって人を寄せ付けない(見た目が怖い)
・readが成功するまで言語として構文解析できない


913 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:16:56.42 ]
>>912
> ・S式をXMLみたいに標準化しなかった(分派ごとに微妙にバラバラ、慢心、環境の違い)
XMLが絶対善みたいな言い方だな。
> ・括弧がいっぱいあって人を寄せ付けない(見た目が怖い)
htmlのタグ<>が人を寄せ付けないという話は聞いたことないけどなあ。
食わず嫌いな怠惰人間の屁理屈にしか聞こえない。

914 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:21:09.05 ]
<html <head <body <p blah >>>>> とかだったら怖いよ…

915 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:25:10.34 ]
・使われないことをユーザのせいにする



916 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:26:45.54 ]
htmlはネストしてはいるけど、あまり深刻ではないんだよな
冗長な終了タグがあるからだけど
何が終わったかが判るから、閉じ括弧の連続よりは心理的ダメージがが少ない

917 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:28:56.94 ]
角括弧[]のお陰で心理的ダメージ軽減したんじゃなかったんですか!?

918 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:32:36.51 ]
ちょっとつけたし
そこにある名前を見るだけで何が終わったかが判るから、
閉じ括弧の連続よりは心理的ダメージが少ない
名前を利用してエラー検出もできる

S式だと閉じ括弧から開き括弧の横の名前へという目線移動が発生する



919 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:36:03.55 ]
冗長なのは括弧を数えるのにエディタ使えと言うのと同じだから
手書き派以外には受け入れられる
属性ズラズラ並べられるのは嫌いだけど

920 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:56:05.25 ]
>>914
> <html <head <body <p blah >>>>> とかだったら怖いよ…
(html (head (body (p blah ))))
こうすると普通だけどなあ。

vim, emacsだったら(html (head (body (p blah ))))の方が扱いやすいし、冗長な終了タグが
問題なんじゃないの。冗長な終了タグが必要な時ってある? インデントもあるんだし。

921 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:58:31.13 ]
Cの中括弧は複文インデントの文化とネストが比較的緩いから
}}}}}}}}}}こんな連続で閉じて数える事は少ない
つまりLISPは括弧でずいぶん損をしてるという話

922 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:05:08.79 ]
>>920
なんか別スレで迷惑かけてる人と同じ匂いがした

923 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:07:27.06 ]
連続括弧 ))))) とかは、DrRacketみたいなLISP対応エディタ使わないとキツいよね。

924 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:07:54.86 ]
そういえばこんなスレがあった

【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
toro.2ch.net/test/read.cgi/tech/1140006937/

925 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:08:12.88 ]
>>920
(html (head (body (p
blah
))))
いくら慣れてもどの閉じ括弧が何と対応するかは瞬時に判らないでしょ

<html><head><body><p>
blah
</p></body></head></html>

これだと3行目だけ見て判る



926 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:08:23.12 ]
S式の方がやっぱりスッキリしていない? あとがんばれば1ページで表示できちゃうぞ。
そして、文字の色付けすればもっと文句言えなくなるだろ。

XML
ttp://toro.2ch.net/test/read.cgi/tech/1140006937/4
S式
ttp://toro.2ch.net/test/read.cgi/tech/1140006937/17
>>921
エディタにやってもらって数えないから。
エディタなしでもカッコが一つ少ないとかは、なんとなくわかるけど。

927 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:09:17.32 ]
>>921
文末に;の方がうざくね?


928 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:13:40.84 ]
すっきりしてるけどもw
いくら単純でも)))))))))))))))うわあああって人もいるよ
色弱な人は色分けされても困るし


929 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:15:10.36 ]
見慣れない人は、これでもかと連打される閉じカッコには狂気を感じると思うw

930 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:50:15.02 ]
短いが正義ならあれだ、みなまで言わない

931 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:53:47.26 ]
>>925
> <html><head><body><p>
> blah
> </p></body></head></html>
(html
(head
(body
(p blah)
)
)
)
でも
(html (head (body
(p blah ))))
でもいいんじゃないの。

本文これだけなら個人的には(html (head (body (p blah ))))でいいかな。

932 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:58:18.49 ]
あとそもそも論だけど、ある開始タグ・終了タグを変更したいときって開始タグを変更して、
終了タグを変更するわけでしょ? 面倒くさくない?

933 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:00:47.66 ]
で、さっき思いついたけどS式でも任意オプションで
終了タグを入れられるようにしたらどうかな

(html (head (body (p
blah
/p)))/html)
readのエラー検出は向上すると思う


934 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:14:50.76 ]
うむ、]で半端に区別するよりは良いな

935 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:22:55.71 ]
>>933
うざいだけじゃね?
適切なインデントと対応する括弧へのジャンプができるエディタがあれば括弧なんか無いのも同然じゃろ




936 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:26:11.95 ]
問題は、lengthとかリスト数えるとこでいちいち考慮しないとダメな点だな
readとwriteの対称も維持するとreadで省くのもあれだし
まあ却下だなw

937 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:32:55.78 ]
半端に入れるぐらいなら終了タグ強制のS式と別のデータ構造にした方がいいか
もうこの話はやめるわ

938 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:46:21.31 ]
>>937
現状、>>926のS式がエレガントって話でしょ。

939 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:46:40.43 ]
括弧無しでは格好がつかない

940 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 00:03:00.75 ]
インデント(タブ)もカッコも同じようなもんだけどね
html
head
body
p blah

941 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 00:05:03.87 ]
>>940
YAMLかよ!

942 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:19:29.01 ]
>>901
> Schemeはlambdaが多機能・高機能すぎて細かい所でネックになる印象

別にSchemeのlambdaは多機能でも高機能でもない。
単にCやJavaや多くの言語みたいに一度しか使わない関数(手続き)に
わざわざ名前を付ける必要はなくて、関数(手続き)を直書きできるというだけ。

Cの場合、関数には必ず名前を付けなければならない。つまり関数は名前を付けた一種の定数tなわけだ。
ところがそれへのポインタは変数に入れられる。
さらにデータの型(関数の引数や結果の型)として関数へのポインタという「型」もあって他のintなどの型と
同じように使えるかに見える。

つまりCでは整数とか浮動小数点数とか構造体とか関数とかポインタいったデータの種類と記憶域属性(auto, static, extern, constなど)とが
自由に組み合わせられないという意味で直交しておらず、関数に関しては妙な制約がある(constしかダメ)ということ。

そういう制約があるのでCではデータの種類や記憶域属性を基本要素概念として理解するのが面倒になる。
Schemeには基本要素概念同士の組み合わせに関してそういう奇妙な制約がほとんどない。(すぐには思いつかない)
そういう意味で個々の基本要素概念は独立で、各々の概念を理解すれば後は自在に組み合わせて使えば良いから明快なのだ。

943 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:52:26.35 ]
Javaは次のバージョンからlambda使えるようになるみたいだよ

944 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 02:08:36.17 ]
その前にJavaって関数内関数を定義できたっけ?
その関数内だけでよく使う手続きが、関数の外に宙ぶらりんになってるの見るとイラッとくるよね(´・ω・`)

945 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 02:09:05.31 ]
>>887
CTMを思い出した。そのパラダイムを実現するための
ギリギリ最小の構文は何かという観点から、
宣言的プログラミングに始まり、構文を少しずつ付け足して世界を広げていく本

記述はOzとかいう言語で、同じような話をLispでもできるだろうけど、
Lispで行うべき必然性もないような気がする



946 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 08:04:58.59 ]
>>943
C#3.0「ラムダ式があれば匿名メソッドなんていらんかったんや……」
C++11「Javaはラムダ式見送ったの?俺もう入れちゃったんだけど」
ECMAScript5「俺はまだ本当のラムダ式を導入していない、この意味が分かるな?」

947 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 08:39:32.65 ]
>>855
きちがいは下手下手連呼せずに黙ってろ

948 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 09:02:00.45 ]
>>947 反論できなくなると黙ってろしか言えない馬鹿は死ね

949 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 11:56:44.56 ]
>>944
おれもCやC++使うとき、関数内関数が書けなくてイラってするときがよくある。
昔CかC++で関数内関数を書いた気がしたんだがきのせいだったんかな(笑


950 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 11:58:49.49 ]
GCC拡張じゃないの

951 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:20:11.55 ]
>>949
Pascalならあったな

952 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:25:25.15 ]
最近はclangならblocksっていうのがある。

953 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:50:56.14 ]
>>949
C++なら関数内structでstatic関数定義すればいい。

954 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:56:42.89 ]
>>953
それはやったことあるけど、書くのもアクセスするのも面倒だよなー(笑

955 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 13:02:43.07 ]
struct xxx{static }
書くときに増えるのは20文字。呼び出しで増えるのは4文字。
それを面倒といわれても。

名前なしで定義できないのは確かに面倒。
名付けに必要なエネルギーはbodyを書くそれを上回ることが多い。



956 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 13:09:29.92 ]
> 書くときに増えるのは20文字。呼び出しで増えるのは4文字。
書くときに増えるのは20文字。呼び出しで増えるのは5文字。


957 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 15:09:51.28 ]
>>953
こいつでC++コードを生成すればいいだろ
www.suri.cs.okayama-u.ac.jp/servlets2/scm2cpp.rkt


958 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 18:05:36.22 ]
最近meta circular evaluator絡みでは、
Javascript/SpiderMonkeyのRiverTrail拡張が面白かった。
Lisp, Schemeの言語拡張だと、Racketの#langがアドホックだけど面白いね。
このスレではRacketを酷評する人もいるけどw

959 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:05:59.20 ]
>>958
Racketは独自の道を歩んでいる感がなぁ(大抵のlisp族はそうだけどさ)


960 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:15:04.79 ]
Racketって日本語の扱いはどんな具合なの?

961 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 23:40:50.41 ]
>>960
データの処理はUnicodeの範囲で標準でサポート。iconvを利用できるので、
エンコーディングの変換もほぼ問題ない。

docs.racket-lang.org/guide/encodings.html
docs.racket-lang.org/reference/bytestrings.html

UIについては全部英語だったと思うけど、Racketになってからは触ってないので知らん。

聞くよりは試した方が手っ取り早いと思う。

962 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 09:24:20.85 ]
愛昆布

963 名前:デフォルトの名無しさん [2012/01/28(土) 11:52:11.03 ]
Schemeでclisp位の機能を持った処理系は有りますか?
Racketは高機能すぎてもう少しシンプルなのがよいのですが・・・
guileやgausheはタブコンプリーションや矢印キーが使えなくて使い難いです。


964 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 12:23:14.04 ]
>>963
それは処理系の機能というより環境の話だなあ。
gaucheなら、Emacsで誰かが補完つきのgauche-modeってのを書いてた気がする。
矢印のヒストリならコマンドラインでrlwrap使ってもいいし。
swankは誰か書いてたっけ?
まあ、そういうのを自分で揃えなくちゃならないのが面倒ってのはわかる。


965 名前:963 [2012/01/28(土) 13:22:32.06 ]
rlwrapをインストールしてみましたがこれは便利です!
有り難う御座いました。

emacsだと便利な機能は豊富そうですがemacsは使っていませんし、此れだけの為にインストールしたくありません。




966 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 14:11:04.32 ]
>>963
guile1系とgaucheを使えばいいいんだよ。


967 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 14:46:34.09 ]
readlineをwrapすればいいんだよ

968 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 15:04:53.75 ]
windowsでschemeのパーサー機能を利用したプログラムを配布したいです
clispならこうするようですが
stackoverflow.com/questions/25046/lisp-executable
schemeでexe化できるのはありますか?

969 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 15:22:44.60 ]
Chickenかbiglooが便利。
gaucheでもgauche-statifierを使えば一応は出来る。

970 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 16:24:19.87 ]
>>965
rlwrap gauche でぐぐれば、gaucheの関数名補完できるようにする方法も出てくるよ。


971 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/01/28(土) 17:03:30.76 ]
>>968
exe って言うからには Windows での話ってことでいいのかな。
Gauche のソースコードの中にある mingw-exify が使えると思う。
これは見ればわかる通りコードを文字列のまま埋め込むだけのものなので期待しているものかどうか。
gauche.git.sourceforge.net/git/gitweb.cgi?p=gauche/Gauche;a=blob_plain;f=src/mingw-exify;hb=HEAD
Windows では gauche-install や gauche-config 等が exe になってないと使い勝手が悪いので用意したということみたい。

ライブラリをプリコンパイルするための機構である precomp を使う方法もある。
gauche.git.sourceforge.net/git/gitweb.cgi?p=gauche/Gauche;a=blob_plain;f=src/precomp;hb=HEAD
これは C のコードを生成するのでそのまま gcc 等でコンパイルすることは出来る。
(C のコードと言っても Gauche VM 用のバイトコードが形式として C になるだけ。)

どちらの方法でも VM やライブラリの結合までは面倒見てくれない。
exe 化というのがどの程度のことを期待しているかにもよるけど、
今のところコマンドひとつ、関数ひとつで全工程をやってくれるような都合の良いものは無い。
Gauche のソースコード自体をいじることも含めればどんなことでも出来る可能性はあるわけだけど、
それが出来るくらいならこんなところで訊きもしないだろうしなぁ。

自分が作ったプログラムに必要な部分をピックアップして同梱するのが手っ取り早い配布方法じゃないかな。

972 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:21:13.49 ]
>>969
ありがとうございます。
gnupackのcygwin経由でchickenをインストールし
www.h7.dion.ne.jp/~samwyn/ChickenDoc/Getting%20started.html
にしたがってcsc -o palindrome palindrome.scmとしたら実行バイナリができました

ですが、chickenを入れていないパソコン用に
静的リンクしたスタンドアロン型実行バイナリを作ろうとして
csc -o palindrome -static palindrome.scm
とすると gcc: /usr/bin/libchicken.a: no such file or directoryとなります
調べたら/usr/lib/libchicken.aがあったのでこれを使うようchickenのコンパイラに伝えたいのですが
www.h7.dion.ne.jp/~samwyn/ChickenDoc/Using%20the%20compiler.html
を見てもどう設定するかわかりませんでした
どうすればよいでしょうか

973 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:27:11.38 ]
>>971
はい。windowsを想定してました。
そうなるとcのコードで書き出してgccでexe化することが
無難かと思うようになりました。


974 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:38:20.72 ]
>>972
マニュアルの「コンパイラの使い方」の中の「生成された C ファイルを配布する」の節。
Cのソースを吐かせて、gccでコンパイル。

975 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:41:53.68 ]
>>974
そうするしかなさそうですね。ありがとうございました。



976 名前:963 [2012/01/28(土) 17:44:10.34 ]
>>970
関数名補完も出来る様になり凄く便利に成りました。
有り難う御座いました!


977 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 18:21:35.65 ]
>>975
ごめん、-L<DIR> でcscに直接渡せるっぽい。
www.h7.dion.ne.jp/~samwyn/ChickenDoc/csc.html
chickenはドキュメントがそれなりに揃っているのに、リンクや参照が悪いんだよな。
マニュアルもチュートリアルで検索に不便だから、何とかならないものか。

978 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:05:24.39 ]
slimeみたいにタグジャンプをschemeでもしたい

979 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:20:52.13 ]
gambit-c もcを生成してくれるな

980 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:37:17.44 ]

Lisp Scheme Part34
toro.2ch.net/test/read.cgi/tech/1327819028/

981 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:39:53.88 ]
大儀であった

982 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 23:24:23.00 ]
racketもバイナリ吐いてくれるな

983 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 09:50:35.68 ]
>>977
キーワード site:wiki.call-cc.org/manでググる

984 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 10:42:52.41 ]
gaucheって日本語も普通に使えるけど、日本語のsymbolもeq?で判定出来ますよね?

985 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 11:14:16.69 ]
>>983
ググれば出るけど、マニュアルはもっと構造的に作るべき。
無いと思って調べなかった機能が別のページで見つかったりする。



986 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 16:13:42.46 ]
ここじゃなくて開発者の目の届く場所で指摘するべき

987 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 00:47:34.95 ]
SICPの時代は Pascal < Scheme だったようだが結局両方駄目になりそうだ
争いは同じレベルの者同士なんだな

988 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 01:06:59.30 ]
>>987
くわしく

989 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 01:40:00.84 ]
易しくするのが教育だと思ってるような教育用言語は駄目だ

990 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 02:23:12.02 ]
>>987にはPascalのどこが駄目だったかわかるまいな

991 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 03:29:24.98 ]
どこがダメだったかと言われると、
なかなか難しいかもしれない

992 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 03:40:50.07 ]
C言語に似せればPascalはまだまだいけるよ

993 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 06:24:04.59 ]
プリプロセッサマクロを駆使した、Pascal に似ている C言語なら、見たことがあるなぁ…。

994 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 11:44:42.80 ]
>>993
それをCだからメンテしてっていわれたときは死んだわw

995 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 12:57:36.93 ]
ようやっとLisp慣れしてきたらxml系のマークアップが苦痛になってもうた
なんであんなめんどくさい書式なんじゃー!

;;;と絶叫したくなったので書いた、ちょっとだけ反省している



996 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 13:04:56.69 ]
VisualStudioみたいな自動補完環境がないとxmlみたいなものは無理


997 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 13:59:32.26 ]
マークアップが多いのではなく
少ない生データを無駄に水増しするマークアップが苦痛だ

998 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 14:09:17.74 ]
sxmlで書いて変換するんだ。何バレやしないさ。

999 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 14:42:31.08 ]
((lambda(x)(x x))(lambda(x)(x x)))

1000 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 14:44:19.45 ]
その後のメンテを考えるとねぇ……

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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