[表示 : 全て 最新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/

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