乙
(((((((前スレは異常にLISPコードが少なかったな
いっそのことゼロでも目指そうぜ))))))))
)))おことわりします(((
LISPから派生した言語でも語るか
Javascript、Luaは外せないな
マクロが無い言語はちょっと…
今こそ Dylan を
シンボルに適用されるマクロってありますか?
(sym-macro foo 1 2 3)
(+ foo) => (+ 1 2 3) => 6
と展開されるような
(define foo '(1 2 3))
(apply + foo)
だと不便じゃないですか
何か意味論的に問題ってありますか?
>>10 それってトップレベルで
foo
ってしたらどういう意味になるの?
似たようなことは CL なら symbol-macrolet で
R6RS Scheme なら identifier-syntax でできるけど
foo の展開結果は単一の式にならないといけないから
(symbol-macrolet ((foo (+ 1 2 3)) ...) みたいなことしかできない
>>11 1 2 3がそれぞれ評価されるべきじゃないでしょうか。
意味論的には実装上のトリックというだけで、
fooが単一式である必要はないですよね?
多値みたいな特別なコンテナとして持っとけばいいんじゃないでしょうか。
引数も持たせて、
(sym-macro (foo n) `(define a ,n) `(define b ,(+ n 1)) `(define c ,(+ n 2)))
(foo 1)で(define a 1) (define b 2) (define c 3)
が定義できたりしてbeginも不要になったり自由度が増えるんじゃないかな。
あ、場合によってはbegin不要にはならないか。
(if #t (foo 1))としたら期待する展開にならない。
(if #t (begin (foo 1)))か
イメージ的にはC言語のプリプロセッサに近いかな。
>>10 意味論的には、1 2 3 はS式ではないので
S式だけでなんでもできるという主張を撤回するか、S式の定義を変える必要がある
そういう Lisp があっても別にかまわないとは思うよ。
誤解がないように言い直させてもらおう
stalin は良くできてる
時々つかう
しかし本にするほどノウハウは必要ない
Readmeで十分
じゃあ自分も誤解が無い様に言っておくけど、
本を出したらというのは冗談だよ。
stalin という名前で誤解して購入する人が
いるかもしれないねっていうジョーク。
>>12 definition 位置の begin だけでなく、任意の式を splice できるという感じなのかな
聞いた感じでは大丈夫そうに思うので試しに実装してみて
質問させてください。おそらくスコープの話だと思います。
SICPを読んでいるのですが、以下のコードの違いがよく分からなくなってしまいました。
ttp://codepad.org/z1f1gUpv `make-withdraw'の挙動はまあ理解できるのですが、
どうして`new-withdraw'の方は呼び出す度にbalanceの値が変わっていくのでしょうか。
let式で100に値を束縛していますが、その処理が一度しか行われないのが何故か分からないのです。
>>19 そのletはnew-withdrawが返してる値であるlambdaより外にあるから。
>>20 letをlambdaに直し、間にdisplayをはさむ等してようやく理解できたような気がします。
(define func body)と(define (func) body)の違いが分かって無かったのが原因でした。
>>10のmacroexpand書こうとしてみたら、なかなか勝手が違いますな
常に被参照リストを意識しての置き換えが必要ですな
トップレベルは(begin〜)で代用
Qi
を本格的に使ってる人いますか?
____
/ \ /\ キリッ
. / (ー) (ー)\ <「美しいということと、実用的価値が常に一致しているとは限らん」
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー?、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー?、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
javaの資源を流用するのに向いてるのは
ABCL
clojure
どっち?
clojureはclと互換にできるマクロがあるとかどっかで見た気がするけど
それよりclojureとclはなんで互換じゃないんですか
lispじゃ無理ってことですか
>>27 誰にでも好きなように言語を作る自由があるから。
殺せ殺せ殺せCなど殺せ
殺せ殺せ全てを殺せ
S SHIKIせよS SHIKIせよ
S SHIKIせよS SHIKIせよ
なんすか?少数派云々言う人ですか
次週金曜日はデトロイトメタルシティ巻頭カラー最終回見逃すな
C言語のCはChinaのC
三国志とかは好きなのに、今の中華は好きになれない
なんでだろう
でも坦々麺好きです
麻婆豆腐と青椒肉絲以外の中華はあまり好きではないが
この二つは好きすぎる。
lispでおk?
>>23 本は買ったけの人です。同じくエロい人の登場希望しますです。
腰が低いやつばっかだな
俺がエロい人だ!ってやつはいないの?
どうなの!
☝
質問です
LispのマクロとCのインライン関数は一体どういう点で違いがあるのでしょうか?
> Cのインライン関数
ここは「C/C++のマクロ」と読むべきなのかな、「C++のインライン関数」と読むべきなのかな。
Lispのマクロは、引数を評価せず受け取って、マクロ内に記述されたLispコードとしての処理を行ったあと
呼び出し元を戻り値で置き換えるので、
まぁイメージ的には、C/C++のマクロとC++のインライン関数を合体させたような感じかなぁ。
C99にはinlineがあるぞ
あ、なるほど。
>>38 Lispのマクロは、大雑把に言えば、マクロボディを二回評価する。
一度目の評価で生成されたプログラムをもう一度評価する。
だからマクロでのプログラム生成に、Lispの機能をほぼ全て使える。
Lispのマクロに比べれば、Cのマクロもインライン関数も
出来ることは極めて限られている。
OCamlの他言語へのインターフェイスの充実っぷりはなんなんだろう
lispはCだけで十分ってことなのか
Lisp は処理系が多いからな。
インターフェイスの充実に主眼を置いた Lisp も世の中にはひとつくらいあるに違いない。
>>38 Lispのマクロは、コンパイル時に処理を行った結果で式を置き換える。
最終的にS式を返せば、コンパイル時にどんな処理をしても自由なので、
柔軟性が非常に高い。
インライン関数は、コンパイル時に関数をただ展開するだけなので、
Lispのマクロの用途の一部分しかカバーできない。
Schemeの場合、Lispのマクロに相当するのはsyntax-case。
パターンマッチで式を置換するsyntax-rulesは、Cのマクロに割と近い。
>>43 Clozure CL には Objective-C へのインターフェイスがあるよ
JVM 上の Lisp なら Java のライブラリを呼び出せるでしょ
それで十分ジャマイカ
Cのマクロの位置でlex/yaccがやれる。それがLispのマクロ。
でもさ、冷静に考えると他の言語ってなんであんな無駄なシンタックスにしちゃったんだろう。
自分自身のシンタックスをパースするにも大仕事とか考えられん。もう括弧だけで良いじゃん。
いいかげん言語作者のエゴにつきあってられんよ。もういい加減疲れた...
あんたらエゴイストが表紙で腕組みして格好付けるもんだから、
それに騙された馬鹿が、こっちに begin ... end なんて無駄な糞を書かす事を強要するんだよ。
何がマクロ(括弧)の無いLispだよ...そんなPとかRみたいなビッチ言語なんて言語ファッカーに消費されてさっさと消えてくれ。
... ゴメン、オナニーしてくるわ...
Qiはいいなあ
あとは誰かが大規模なプロジェクトで使ってくれて安心感があれば
これはああだけど、これはこうで
いいのがあれば俺もあれなのに
エクスキューズですね。
>>49 おま、あれば、じゃないだろ!
おまえがやれ!
ベンチマークに出てくるMerlinてQi のことだったのか
Qi IIは本買うと商用ライセンスってQi IのGPLのときはどんな状況だったんだろう
clojureも処理系をjavaからclojure自身に書き換えるつもりらしいが何年後かな
lisp系は本気出せば3日でできるだろ
季節の変わり目は体調を崩しやすい。5月から本気を出す
そして五月病に
おれ春は調子イイよ?
興味ないからやらないだけで
>>48 JavaScript はどうよ。これこそ、マクロ(括弧)の無いLispじゃね?
プログラムがデータじゃない Lisp にどんな意味が…
じゃあlispでjavascript作れよ
その「じゃあ」はどう繋がるんだ。
プログラムがデータになるだろ
プログラムがデータ、とか言いながら、
割と構文みたいなモノが存在しているのは何なのさー。
と、Schemeをかじった時に大変疑問でした。
else とか define とかの特別扱いと来たら、もう。
幻想を抱きすぎたのかもしれない…。
CLだと違うのかな?
というかそもそもプログラムがデータって具体的にどういうこと?
まさか、関数がオブジェクトだ、ってだけじゃないよね。
(健全じゃない)普通のマクロもリードマクロも一応理解しているつもりだけど…。
>>62 君は意味論と構文の区別を付けられてない。
もっと勉強しなさい。SICPでも読んで。
>>62 プログラムは S 式 => S 式はリスト => リストはデータ
リストを扱うのと同じ方法でプログラムを操作出来るから
プログラムがデータ
>>62 というか、そもそもマクロ理解してるってのにそりゃないでしょー。
あれぞまさに、プログラムがデータだからこそ、できる技なんだから。
syntax-rulesでもsyntax-caseでもdefine-macroでも、全部そう。
>>63 なるほど。
もっと精進します。
>>64 超なっとく。
ところで、マクロ以外でプログラム=データだとうれしいことって何ですか?
連投ごめん。やっとこさ、わかりました。
readすげー。
なんかとんでもない勘違いをしてた気がする…。
特に、S式が何か、ってのを理解してなかったです。
そりゃぁ、他の言語にマクロが無いわけだ…。
そして
>>68は、最高の喜びと、現実に生きる辛さを知るのであった。
>>70 File Not Found っていわれた。
次は
>>68 がCLを学び実行時に compile が実行できることの真の意味を知る
第7話「コンパイラの造りしもの」
お楽しみに!
あれ、MIT scheme ってメジャーバージョン上がってたんだ。
9.0.1リリースされてた。
縦
L 書
I き
3 S
秒 P
破 で
綻
WiLiKiにログイン認証機能つけるのって大変だと思いますか?
どっかの言語作者が
> 難しい問題を解決しようとして実際にかかる時間 << 越えられない壁 << 難しい問題を長く取り組む覚悟をするためにかかる時間
って言ってたよ
モチベーションを上げていくのって大変だよな
長期的に考えたらやるべきである事が明白でも、
短期的に見たら何もしないのが一番楽だもんな…
もっと長期的に考えてみよう
生物の進化にモチベーションなどという概念は必要ない
つまりGA最強
ガガガガガガガガガ
>>77 覚悟じゃなくてサーベイの時間じゃないかな
WiLiKiを改造するか
Mediawikiを改造したほうが楽か
>>78 其れは言い訳だよ
モチベーションが無くなったのを他人のせいにしちゃだめだよ
誰でも自分がやりたいようにする事が出来るんだぜ。
ケチつける奴がいたら、其れがどうしたってだけの話だよ
だれもあんたや俺や誰かを止める事はできないってわかれば何だって出来るさ。
MediaWikiのソース汚い
改造すんのめんどくさそう
lispはこういう時いいよね
>>76 サーバ側の設定 (.htaccess) でBASIC 認証にすれば別に改造は要らないよ。
同じデータベースを指してるふたつの cgi を用意して片方を認証付きにする運用は公式ドキュメントになかったっけ?
わけのわからん希望に満ち溢れているスレだな。なんか元気になったわ。
訳のわからん希望、それはとても大事だ!
無くすものが無いんだからどんな希望も持ち放題!
俺30前だけど 老後の楽しみ.txt の内容がそろそろ5000行越えそう
>>76 認証機能だけなら簡単。別にlogin用のcgiつくって、認証通ったらcookieにセッションid足してやって、
WiLiKi側で(parse-cookie-string (or (cgi-metavariables "HTTP_COOKIE") "") してチェックすればいい。
パスワードをweb経由で変更させたり確認メールを送ったりするのは面倒だけど。
また自動返信BOTか
ま!た!か!
Emacsでscheme書いてるけど、いまいち使いこなせている気がしない。
コードのハイライト、括弧に応じたインデント、閉じ括弧打つと対応する開き括弧を示すのと、
動作の確認はemacs内でシェルを開いて処理系起動させてloadで確認してる。
これだけでも十分便利なんだけど、もっと便利な使い方ってあるの?
emacs + flymake使って、逐次syntaxチェックや、
scheme-complete.elとかで、シンボルの補完とかかな。
>>93 inferior-scheme-mode で対話的に使うのが伝統。
scheme は R6RS で REPL 廃止されたって言っても大抵の処理系では用意してるしな。
なんでdefine連続して使う必要あるんだろ
stalin のサンプルコード
nfm.sc から
(define (read-pnm pathname)
(define (read-pnm port)
(define (read-pbm raw?)
>>96 例えば次の様なコードをgoshに解釈させると、
(define (f x) (set! x 1) (define y 0) y))
以下のエラーを吐く。
*** ERROR: Compile Error: syntax-error: the form can appear only in the toplevel: (define y 0)
"(stdin)":1:(define (f x) (set! x 1) (define y 0) y)
手続きの内部での定義はその位置にしか現れる事ができない。
>>93 slimeサポートされてる処理系に移って今使ってる処理系を捨てる
emacs24でセマンティック機能を有効にしたら
schemeのコードもすごい色や横線がいろいろついた華やかな画面になった
XMLでGUIを構築するXULやgladeみたいなの
LISPかschemeで作れん?
つまりS式でやりたいんや!
Clojureでも使っとれ
newlisp楽しいです
>>100 XMLとS式は簡単に変換できるんだから、
普通にSXMLなり独自形式で書いて、XMLに変換すりゃいいじゃない。
あとはFFIなりを使って何とかならん?
そういうのじゃないなら、ClojureとかIronScheme使えばいいと思う。
XMLとS式は違うでしょ。
attributeとelementをどう定義するの?
SXML
s式をhtmlにするcl-who
しかし逆向きの変換ができないっぽいのだけど
>>106 のはできるんだろうか
on lispのマクロをschemeに移植なんて誰かやってるだろうと
検索してみたが,ごく一部の移植しかみつからなかった
かい
>>93 亀だけど
C-M-u, C-M-d, C-M-f, C-M-b, C-M-a, C-M-eとかは使ってる?
亀がしゃべった!
和亀ちゃん!!!!
一瞬xyzzyのことかと思った
>>114 使ってませんでした。ありがとう亀さん。
C-M-a/eは便利ですね。
ubuntu10.04LTSがリリース
宣伝可
宣伝邪内余
表紙が友好的なエイリアンでとても気分が良いので注文してみた。
届いたらレビューするからそれまで待って。
http://www.lisperati.com/landoflisp/panel02.html ‖//|| | | |ヽ
‖//|| | | | | |ヽ
..|ミ/ ー◎-◎-)
(6 (_ _) )
_|/ ∴ ノ 3 ノ 〜♪
(__/\_____ノ
/ (__‖ ||)
[]__ | | lisp命 ヽ
|] | |______)
\_.(__)三三三[国])
/(_)\::::::::::::::::::::|
|amazon..|:::::::::/:::::/
..|____|::::::/:::::/
(___[)__[)
Land of Lispはずっと前にamazon.comで注文したけど遅れて遅れてキャンセルされちゃったぞ
今検索してもcomの方はない。amazon.co.jpは情報反映されてないだけじゃないか?
127 :
亀:2010/05/02(日) 08:21:18
>>118 C-M-a/eも便利だけど、C-M-u/d(S式を上がる/下がる), C-M-f/b(同レベルの前のS式に行く/後ろのS式に行く)が無いと亀はLisp, Schemeが書けないなー。
これらを使っていると、文字単位の移動をする必要がほとんど無くなって快適。
>>127 org-modeをうまく設定して ( ) の中をおりたためないものか
hs-minor-mode でどうだろう。
あと C-M-t (transpose-sexp) とか raise-sexp も便利だよね
俺は使ってないけど、 paredit.el も使いこなすと手放せなくなるんだろうか
131 :
亀:2010/05/03(月) 15:00:24
>>129 亀も
>>130と同じく、そういう時はhs-minor-modeを使うなぁ。
>>130 そうそう、C-M-tと、C-M-SPCを忘れていた。これらも手放せない。
実は亀はraise-sexpを知らなかった。教えてくれてありがとう。
132 :
亀:2010/05/03(月) 15:12:07
paredit.el、確かに強力そうだな。
wrap, splice, split, joinさえあれば十分な気もするけど。
馬鹿にされてるといえば、
そんな欄外の話がいっぱいあることで
有名な線形代数の本があったな
亀さんはかわいいな
こしこししちゃう
( ゚д゚)ポカーン
pygame(ぱいがめ)を思い出した
MLtonの最終更新が2007だけど、この業界のスピードって
こんな感じなの?
Cへのインターフェイスが一番充実してるのは
chickenだろうか?
その文脈ではtransformは仮の名前で、要はマクロ展開の結果を見たいってことでしょ
Gaucheならmacroexpand
もちろん (+ 1 2 3) を (add (add 1 2) 3) に展開したいならあらかじめ+をマクロ
定義しとく必要がある。
それ
(apply + 〜
だとどうなるよ
stalinでストリーム動かない
ループはdoしかないか
>143
マジか
以前ヤフオクで落札しつつもまだ読んでないのに
R6RS の日本語訳を PDF 形式にしたのがどっかに無かったっけ?
前スレか前前スレくらいに上がってた気がしたんだけど見付からない。
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
http://pc12.2ch.net/test/read.cgi/tech/1272469779/ で聞いたけど、荒れてて返事がつかないからこっちで聞くわ。
for キーワードで run を指定して import した手続きが
マクロの trasformer で使えちゃうのは仕様?
指定しなかった場合に自動的に決定してくれる (implicit phasing) のならともかく、
指定を無視しちゃうのは微妙だと思う。
他の R6RS 処理系でもそうなってるのが多いみたいなので何か理由があるのかねぇ。
>>149 その質問したの俺なんだけど、
どっちにしろこっちでも訊くつもりだったので別にいいか…。
>>149 お前、さりげなくひげぽん叩きスレに誘導したいだけなんちゃうか
強い言語って作者自身が仕事で使ってるよね(あたりまえか)。
というかそれが必要条件のような気がする。
Moshはどうなんだろう。ひげぽんさんは現場でガリガリ使ってるのかな。
155 :
デフォルトの名無しさん:2010/05/11(火) 19:02:14
期待age
>>149 Mosh はマクロ展開を psyntax に丸投げしているはずなので、それは psyntax の話。
まず用語を整理しておくと
Implicit phasing はフェーズを指定しなかった場合に自動的に決定してくれる 仕組みでは*ない*。
Implicit phasing for library dependencies [1]
http://gradworks.umi.com/33/44/3344623.html では、
ユーザーが for を使って手作業でフェーズを指定するのを explicit phasing と呼び、
ソースコード自体を暗黙のフェーズ指定と思ってフェーズを計算するのを
implicit phasing と呼んでいる([1] p.15)。
for run な識別子が expand でも見えるのは implicit phasing の意図通り。
これは、識別子の可視性はどのように import されてきたかではなく、
字面だけから決まるべきだ、というのが動機([1] pp. 13-14)。
Ikarus や Mosh といった psyntax 系の処理系はこういう動作をする。
Ypsilon はおおむね psyntax に合わせていたような気がする。
Larceny とかの explicit phasing の処理系は異なるフェーズの識別子を参照するとエラーになる。
for による指定を無視してよいことは R6RS の 7.2 節の最後の段落に書いてある。
処理系の実装上の手間とか効率とかは置いて、
言語としての必要性で言えば explicit phasing って必要かな?
フェイズなんてユーザーに見せるべきでない実装の詳細に思える。
gaucheでマクロ展開してみたかったけど、うまくいかなかった
;a.scm
(define (integers-starting-from n)
(cons-stream n (integers-starting-from (+ n 1))))
;transform.scm
(define-macro (cons-stream a b)
`(cons ,a (delay ,b)))
(with-input-from-file "./a.scm"
(lambda ()
(let loop ((ls1 '()) (s (read)))
(if (not (eof-object? s))
(begin
(display (%macroexpand s))
(loop (cons s ls1) (read))
))))
(%macroexpand (cons-stream 10 20)
=> (cons 10 (delay 20))
(define tmp (cons-stream 10 20))
(%macroexpand tmp)
=> tmp
tmpの中身をを展開するにはどうすればいいのだろう
161 :
転載:2010/05/13(木) 19:26:31
>>160 強いて tmp の中身といえる物を見るなら
(disasm tmp)
かな。
>>160 tmp には (cons-stream 10 20) という式が入ってるわけじゃない。
(cons-stream 10 20) を展開して評価した結果として得られるコンスセルに束縛されてる。
式と、式を評価した結果を混同してないか?
マクロをいじる前に Scheme の評価モデルを理解する必要があるんじゃないのかなぁ。
macro展開ですが
DrSchemeのGUIメニューからできました
streamはlistだけじゃなくてvectorや多次元配列にも使えるとおもうんだけど
SICPに例が載ってないのは、あんまり有用じゃないからなんだろうか
シーケンシャルアクセスを前提としたコレクションを遅延させるとストリームって概念に落着くと思うけど、
ベクタに置き換えるととたんにスッキリしなくなるな。
画像( vectorのvector) のコンボリューションは積分と同じだからstreamで書けるけど
なんだか良くないような気がする
>>158 識別子の解決という観点では implicit phasing だけでよさそうな気がする。
ただ、フェーズというのはライブラリのインスタンス化や訪問ともからんでくるので
そこで何か差が出るかもしれない。
例えば、ライブラリのインスタンス化の時点で副作用を起こしつつ、
その副作用を異なるフェーズ/インスタンス間で共有するかしないかということで
ライブラリシステムの表現力に差が出るかもしれない。
でも、これは phasing の問題というよりはライブラリのインスタンスの扱いの問題かもしれない。
実際に、 implicit phasing でも、複数のインスタンス間で状態を共有したくない場合は
コンパイルを別にするという方法が紹介されているし、
explicit phasing であっても処理系のオプションなりなんなりで対応できそうな気がする。
R6RS の Formal Comment #92 を読むと、
どのようにライブラリをモデル化するのがよいのか自明でないので、
とりあえず処理系に選択の余地を残したように読める。
他に何か差の出そうなところってあるかなあ?
(define (accumlated-stream op initial s)
(define accumlated
(cons-stream
initial
(stream-map op s accumlated )))
accumlated
)
マクロにしたほうがいいんだろうか
動いているけど、いまひとつ自信ない
170 :
デフォルトの名無しさん:2010/05/18(火) 08:51:00
なんかアマゾンでみたけど、Norvigの日本語訳が出るらしいな。
値段も9000円越えててびっくりだけど
171 :
デフォルトの名無しさん:2010/05/18(火) 08:52:18
172 :
デフォルトの名無しさん:2010/05/18(火) 08:53:37
なんかタイトルが違和感あるんだけどな。実践~と混乱させそうな
タイトルにしてる。
>>165 stream っぽいベクタって想像がつかないんだけどどういうの?
要素の評価が遅延されるベクタっていう意味なら
プロミスのベクタとか Future のベクタになりそうだけど。
>>173 必要ない計算はdelayしてくれるvector演算
名前はベクタでも実体はリスト
体は大人でも頭脳は子供
>>170 結構前から感想が書き込まれてるよ。
本が重いって話ばっかりだったけど。
翻訳はLisp本のくせになかなか良いと思う。
>>174 なるほど。
無限リストとしての stream しか頭になかったからそちらに思い到らなかった。
リスト→ stream だと、可変長有限列が可変長無限列になったり、
非決定性計算の結果のうち必要になったものだけを計算するとかができるようになるけど、
ベクタの場合だと固定長なのは変わらないから、
無駄な計算をしなくて済むようになるくらいだろうか。
Haskell だと Array も遅延されるけれど、それによって何か面白いテクニックがあったりするんだろうか
178 :
デフォルトの名無しさん:2010/05/19(水) 01:00:47
schemeに単純にラベル付いたらいいと思うんですが、どうすか。
特にテーブルジャンプ系が弱いと思うので。
gotoの是非は議論しないものとします。
ここではlabelは構文で、gotoは関数ってことにしてます。
(let ((i 0)(v (label->vector 'a 'b 'c)))
(goto (vector-ref v i))
(label a)
(set! i 1)
(goto (vector-ref v i))
(label b)
(set! i 2)
(goto (vector-ref v i))
(label c)
(set! i 0)
(goto (vector-ref v i)))
>>178 Scheme の思想だと
* goto は escape procedure のひとつである
* escape procedure は継続で表すことができる
* 継続の起動は手続き呼び出しと同じである
* 末尾再帰は goto と等価である
というあたりで、 call/cc とか末尾再帰を使って goto を表すことになる
(なんでも継続 とか なんでも再帰 も参照)。
その例だと↓みたいに変換すればいいんじゃないだろうか。
(let ((i 0) (v #f))
(define (goto vec i) ((vector-ref v i)))
(define (a) (set! i 1) (goto v i))
(define (b) (set! i 2) (goto v i))
(define (c) (set! i 3) (goto v i))
(set! v (vector a b c))
(goto v i))
goto くらい標準で使いたい、という場合は CL で :-)
lambdaは究極のgoto
今時gotoを使うのはステートマシンとエラー処理くらいだと思うけど、
どちらもマクロが既にあるのでそれを使う。
named let って goto かと思ってた
184 :
178:2010/05/20(木) 01:20:24
>>179 そのコードがまっさきに思いつきませんでした
とうとう自分にも脳の硬化が始まってしまったようです
LISPerの皆様に質問。
実際にLispを使っての開発生産性というのはどんなもんですか?
BooやOCamlなどの関数型との違いなどもわかると嬉しいです。
自分は.NET畑での開発が主なので最近はC#やF#しかさわっとりません。
日々の開発の中でここLispのマクロのようなもの使えれば楽に実装できるのにと思うこと多々あり。
けど複数人での開発ではマクロは逆に保守の上で大変になったりするような気もす。
Lisp 系言語で言うところの「関数型」ってのは主要なデザインパター
ンのひとつって感じだと思う。 規格を見ると CommonLisp はマルチ
パラダイム型って書いてるし、 Scheme も幅広い理論を表現できるっ
て書いてあって、関数型を全面的に押し出しているわけではない。
自分なりのスタイルで、あるいは問題に対して適切なスタイルで表
現できるところが Lisp 系言語の強さだと言われている。 逆に勝手
なスタイルで書けてしまうので複数人がかかわるとグダグダになるっ
てのは仕方がない面はある。 Lisp 系言語を使ったプロジェクトが
うまくいく要件としては以下のようなことがよく挙げられる。
・担当する範囲を明確にすること
・それぞれの担当分については担当者がキッチリと責任を持つようにすること
(時にはユーザーサポートまで含めて)
・チームの人数を少なくすること
・チームは全員が同じ場所で (声が届く程度に近くで) 作業すること
・メンバーは Lisp に熟練していること
Lisp 系言語以外を使っているプロジェクトを言語だけ Lisp 系に切
替えてもたぶんうまくいかない。
少人数のチーム開発で Scala を使ったことがあるけど、
最近の表現力のある型システムを持つ関数型言語なら
Lisper でもそれほどストレスを感じなさそうだと思った。
Lisp が動的型付け言語だといっても、行儀のよいコードを書けるプログラマなら
自然と型の付きそうなコードを書くし、ほとんど問題にならないと思う。
マクロも、式の評価順序を少し変えたい程度なら名前渡しができればそれほど困らない。
一方で、内部で使うだけの、 Lisp ならリストで表現してしまうようなタグ付きデータを表現するのに
いちいちバリアントなり代数データ型なりを定義しないとならないのが面倒なこともあるけれど、
このあたりは安全性とのトレードオフかなあ。
あと、 Lisp 的な書き方が型システムの関係上できなくて、静的型の作法で書き直さなくてはいけないことはある。
他にも、時には問題に合わせた適当な構文が欲しくなったりして Lisp のマクロが恋しくなることもある。
基本的に、 OCaml や Scala あたりの静的型付けの言語ならそれほど足枷にならないと思う。
ただ、その言語でもともと想定されていたことを越えるようなことをしようとするとやはり Lisp の柔軟さが恋しくなる。
ただし、その時は型システムやらの助けがなくても生きていけるくらいの度量は必要になる。
個人としてはこんな感じ。複数人だと
>>186 の言っているようなことも考えないとならない。
最近Cでちょっとしたツール書いているんだけど、
if((ret = iofunc(args)) != 0){
error("error!\n");
}
みたいなコードを延々と書かなきゃいけないのが面倒で面倒で。
そういう意味でCiSEが広まったら非常に嬉しい。速度と汎用性の共存がここにあるような。
scheme-to-C
とかいうもののコード読んでたら
継続をインラインアセンブラから主要なレジスタをpushすることで実現してた
そのせいで64bit OSでは動かなくなってた
64bit OSで動かしたいんだけどなあ
32bit プロセスが動かせない 64bit OS ってどれの事?
191 :
185:2010/05/21(金) 01:54:06
OCamlやScalaのような型推論を備える静的言語を使えば、多少の余計な記述だけで大体のシチュエーションでLispのマクロを使った場合と同程度の簡潔さでやりたい事を記述出来そうな気もしますが、実際の開発ではどうでしょう?
もちろん開発の対象によって違いがありそうですが。
Lispのマクロを使わないと実現が難しそうだったものってありますか?
たとえばIoCフレームワークのようなものをつくるばあいなどはどうでしょう。
昔はS式を使わないとパーサの実現が難しそうだったり
evalを使わないと高階関数の実現が難しそうだったんじゃねーの
今ではevalの代わりにクロージャかマクロを使うようになったが
マクロのレキシカルスコープは不健全だと指摘されたりして
じゃクロージャだけでいいやみたいな
JavaScriptみたいな言語が勝ってると思う
型といえばパターンマッチだが、あれは静的ではないな
まあどう見てもマッチしない場合は静的にチェックできるのかな
>>191 型推論やらの表現力とマクロの表現力はまた別次元の話だと思う。
マクロが欲しいものの例のひとつは OCaml だと
モナドを使いたい場合があると思う。
bind でごりごり書ける人は必要ないのかもしれないが、
そういう場合は Camlp4 というプリプロセッサを使うのが常道で、
pa_monad というのがあるのだけど、
http://www.cas.mcmaster.ca/~carette/pa_monad/ 使うのはいいとしても、こういったものを自分で書きたいかというと……
(主にドキュメントがあれとか)。
他にも Camlp4 拡張として色々な構文拡張を作っている人がいる。
sexplib みたいな、自動コード生成とかもある。
Haskell の方だと、 Arrow 記法みたいなのが欲しいときに処理系依存の機能を使わないといけないとか、
Monad だけ do 記法があってずるい! 俺のほげほげライブラリにも使わせろ、とか。
Template Haskell というのがあるそうだけど、こちらはよく知らない。
関数合成で書けばいいじゃんと言われそうだけど
(そもそも整数だってラムダ項で表現できるし)
やっぱりよく使う機能にはそれ用の構文があった方がうれしいよね、と
(しかしそれを言語のコアに入れたいかというと別問題)。
195 :
185:2010/05/21(金) 08:32:23
型推論の表現力とマクロの表現力が別次元なのは同意。
というかだからこそ使いたい言語でマクロが無いからLispいいなぁーと気になってるわけで・・・
聞いてみたいのは、実際の開発場面でマクロ>>>>>>越えられない壁>>>関数合成となるような場合がどの位あるかなぁと。
多少余計な記述が増えても関数合成などである程度簡潔に書ける場合も多いとか、マクロなかったら著しく記述量が増えるor実装が無理とか。
想像だとマクロあれば便利そうなところはいろいろ思いつくんだけど、やっぱりやりこまないと気づかないマクロの威力というものがある気がす。
ちなみにF#だとCamlp4に近いもの?としてcomputation expressionsというものがある。
http://en.wikibooks.org/wiki/F_Sharp_Programming/Computation_Expressions でもマクロの方が柔軟性あって使い勝ってよさそうだなと思ってる次第…
これは開発案件次第だろうけど、俺の関わったLispの案件は性能を追求しないとならない
ことがほとんどで、マクロはコンパイラの癖を利用するためのコード変換のために手放せない。
関数合成も理論上はコンパイラがうんと賢ければ同等のネイティブコードが出るだろうけれど、
実際の現場で思うようなネイティブコードに落ちてくれない時に、コンパイラに手を入れるのを
待つのは不安だな。そういう意味では越えられない壁はあると思う。
sqlの最適化をイメージしてしまった
>>198 Schemeにとっての泥臭い現実は「C言語で書かれている」ということです
それもまた、替え難い救いなのですよ
plt-schemeでいろんなモジュール読んでくと、読むだけで落ちるようになる
schemeもある意味で汚い
マクロはチーム開発の時は原則禁止したい。読みにくいので。
ただし、自分だけは使いたい。
> 「どんなに汚くても、打てる手段がある」というのは
> 何物にも替え難い救いなのです。
last resortか
>>196 いいなぁ…おれの憧れだわ、そういう仕事。羨ましい。
Smalltalk とかを見てるとマクロはなくてもどうにかなるのかなあと思うけれど
泥臭い最適化をしたいとか、泥臭い定型を後ろに追いやりたいとかなると
マクロが欲しくなるよね。
Smalltalk 方式なら単なる構文糖的なマクロは要らないね
他人に渡すときにmacroexpandすればいいじゃない
マクロ律速ってなんか変じゃないか
慢性的急病みたいな
>>201 わかりにくいマクロを作るやからってのは
センスがまったくないlisperだと断言していいよ。
set-car!とset-cdr!使ってリストから先頭の要素を取り除く手続きdelete-list!を書いたのですが、
これだと(a)といった要素数1のリストを破壊的操作で空リスト()にすることができません。
set!を使ったマクロdelete-list!で目的は達成できたのですが、
()って一体何なのでしょう。
最初の者にして最後の者だよ
クトゥルフでいうヨグ=ソトースだ
() はリストではあるがペアではない
AIからめたLispの本で9000円ぐらいするやつじゃない翻訳されたやつってなんかあったっけ?
ウィンストンの「Lisp」?
>>213 >>171の本か?
店頭で見たけど、どうAIなのか分からんかった。まあGPSとか書いてあったけどさ
>214 かどうかわからんです・・・
>215 いやそれが9000円ぐらいするやつwなんか4000千円ぐらいであったような・・・ うろ覚えなんで全然違ったかもしれん。
>4000千円
よくわからんけど、金持ってんな。
ゆきおさんは、15百万/月だけどな
『実践 Common Lisp』 って AI っぽい話あったっけ。
積読してあったのの目次見た感じではなさそうだけど。
『On Lisp』なら最後の方で Prolog 作ったりしてるな。 3800円。
>209
MaybeをつけろよこのLISP厨
car :: [a] -> Maybe a
cdr :: [a] -> Maybe [a]
>>213 実用のほうでしょ。ノーヴィック本 このスレの前のほうに話題がある
最近のCPUを使う場合
stalinとCはそんなに速度に違いがない気がする
じゃあなんで「最近のCPU」って但し書きすんの?アホなの?
最近のCPUはstalinがやるような最適化を内部にもってるのだろうか
lispを「読める」Cに変換するプログラムを途中まで作って挫折した
型情報ってどうやって決めればいいんだ
int char もみんなdoubleにすればいいのか
228 :
227:2010/05/25(火) 15:25:53
やもえず変数名に
foo-double
bar-vector
とかつけたんだけど、本当は自動判定させるのが正しいやりかたなんだよね?
yamoezu
9200円の本ちら見してきたが、大した事ないな
や萌えず
だから、9200円の本ちら見してきたが、大した事ないって
>>227 何も考えないなら共用体と型タグを使ったオブジェクトに box するしかないんじゃないかなあ
ある程度は型推論するとか CL 風に型指定をつけられるようにするとか。
CL で disassemble してみたら何か参考にならないだろうか
今日初めて「蓮コラ」というものを知りました。
Scheme のマクロで出てくる ... (ellipsis) を見るたび思い出して鳥肌がたってしまいます。
そんな事言ったらC++のスコープ解決演算子はどうなるんだよ
>>229 yam oezu = さつまいも 追えず
きっと腹が減って動けないのだろう
() [] {} 全部同じ意味になる日がくるんだろうか
無理に統一をしようとすると宗教戦争になる
何でもアリにすりゃいいんだよ
所詮言語なんてライブラリ次第なんだから、
ライブラリの作り方や導入の仕方や削除の仕方や編集の仕方が
小学生でも一瞬で分かるぐらい簡単な方がいいな
>>236 俺が住んでる地方ではグニャグニャして噛み切れないことを「おえん」と言うぞ。
ちなみに香川県の西の方だ。
おえんは広島岡山でも使うから瀬戸内方言かな
同じJVM上だとclojureとかscheme実装のkawaの方が、軽量動作に見えるのはCLの規模もあるんかなー
正直他人の作ったlisp処理系には興味がないのでな
>>240 つまり、芋を噛み切れないってことだな。
干し芋うめえよな。
つまり yum って事か。
何この芋スレ
R6RSつまみ読みしてみたんだけど、
`syntax-rules'とか`identifier-syntax'のtransformerって`define-syntax'内でしか定義できないの?
他の用途なんて無いのは分かるけど、ikarusではtransformerも第一級オブジェクトになるのに
ypsilonではエラーになる。
>>249 自信はないけど、エラーにならずに手続きが返るのが正しいように思う。
R6RS の 11.19 を見ると
>An instance of syntax-rules evaluates, at macro-expansion time,
>to a new macro transformer by specifying a sequence of hygienic rewrite rules.
あるので、 syntax-rules の評価結果はマクロ変換子になる。
R6RS-lib の 12.8 にあるように syntax-case を使って syntax-rules を実装してあるのなら、
展開結果はただの手続きになる。
Larceny の R6RS モードでも裸の syntax-rules を評価したら手続きが返ってきた。
R6RS 本体ではマクロ変換子が何なのか定義していないように見えるのが少しひっかかるけど、
作者さんに聞いてみた方がいいんじゃないかなあ。
ところでマクロから変換子を取り出すことって出来ないかな?
それが出来たら macroexpand-1 相当のことを簡単に書ける。
>>251 自分で定義する場合なら一段中間層をはさんでこんな感じでどうかしら。
(define e
(syntax-rules ()
((_ x) x)))
(define-syntax m
(lambda (x)
(syntax-case x (expander)
((_ expander) #'e)
((k y ...)
(with-syntax ((z (e #'(k y ...))))
#'z)))))
既に定義されたマクロから変換子を取り出すポータブルな方法はないと思う。
Rubyの生産性の高さはどこまで本当か? - 分裂勘違い君劇場
http://d.hatena.ne.jp/fromdusktildawn/20061002/1159784863 この記事を見て、急激にLispを触りたくなったのですが
LispのdjangoやRuby on Railsのようなよく使われているwebフレームワークって何がありますでしょうか?
また、www::mechanizeのようなwebスクレイピングのライブラリや
なんとかspecみたいなテスティングフレームワークでよく使われているものはないでしょうか?
上記のようなライブラリや環境を想定した場合、どのような処理系をつかったものでしょう?
開発は多分Windowsになるかと思うのですが、実際の動作環境はLinux(Ubuntu)を想定しています。
aptとかで入るとよいのですが・・・
>>253 Common LispならCLikiに色々載ってる。
ウェブフレームワークで割と有名なのはWeblocksとか?
スクレイピングの方は知らない。
Schemeだと日本で有名なのはKahuaとか?
あとはBigloo使うHOPとか、PLTにも何かあった気が。
テストフレームワークはSRFIにもなってるけど、
結局処理系独自仕様の群雄割拠だった気がする。
処理系は、CLだと商用ならACL、フリーならSBCL、
SchemeならPLT RacketとかGauche辺り?
ぶっちゃけ、Schemeだとバリバリ処理系依存なので、
使いたいソフトウェア決めてから処理系選ぶしかない。
>>253 Rails のようなものを使いたいのであれば Rails を使えばよい。
枠におさまらないとき、かつてないパラダイムを構築したいといったときにこそ Lisp の出番なの。
既に枠組が決まってるところは Lisp の柔軟さはむしろ邪魔になりさえする。
既存のライブラリを使って何かをしようというなら Lisp は良い選択肢とは言えない。
マクロが必要になりそうかでlispを使うかを決めています
ubuntuの最新版からbiglooのパッケージが消えてる
mac portもmzschemeとbiglooが壊れてて動かない
いろんな人がLispは良いというから、OnLisp買ってみたけど
なんというか、まったくLisp知らん俺にはさっぱりだった。
そんな俺にいい書籍教えてPlz
そりゃマクロの本だからな・・・
A4、4枚ぐらいでLispってこんなことできるんだΣ( ゚Д゚) スッ、スゲー!!ってのを実感できる文書キボン
PLT って名前変わったのね
PLTは、うちはミニマリズムじゃないからRacketにするよとか言ってるが、
お前、R6RS主導してミニマリズム崩壊させておいて、そういうこと言っちゃうの?
とか思った。
pyもrbもバージョンでつまずいた
デノミ主導して経済崩壊
268 :
253:2010/06/17(木) 14:11:51
>>254 ありがとう
処理系はけっこうたくさんあるんですね。
うーん悩ましい。使いたいソフトで処理系選ぶ方向で見てみます。
>>255 practical-scheme.netの翻訳、記事昔見たことあります!
当時これ見てLispすげーと思って挑戦して、挫折して元使ってた言語に戻ったのを思い出しましたw
もう一度見てみます。
>>256 なるほど・・・確かに「Railsみたいなの」を要求する人にはRailsでいいんじゃね?というのはたしかにそうですね。
ありがとうございました。
Common lispのtype-ofに相当するものはschemeにはないってことでいいのでしょうか
RnRSには無い気がする。
>>269 そもそも Scheme には type specifier という概念がない。
Scheme の型は、ある型述語(string? とか pari? とか)に対して
#t を返すかどうかで定義されている。
質問です。
Schemeでコンパクトな実装はございますでしょうか?
実装を読んで勉強するのに手ごろなサイズのものを探しています。
>>272 今なら Chibi Scheme が良いかな。
lispは使う言語ではなく、処理系をCで実装する言語。
故に入門者はまず処理系のソースを読みます
>>274 ワラタ 苫米地英人に恨みでもあんのかなw
Lispのルーツは数学だから、「昔の」->「現在でも使われ続けている原理」。
C,Java系統だとLispよりCPUアーキテクチャ寄りだから「昔の」->「今では使えない手法」。
Lispを使ったことが無い人が、「昔の」にネガティブイメージを持つ理由は、案外こんなところにあるのかも。
CもJavaも昔のコード使えるが
コンパイラがなくなれば使えなくなる
数学には言語仕様もコンパイラもなんにもない
この「昔の」は「時代遅れの」という意味だろ
Lispは数学じゃないし
コンパイラがなくなるとかあり得ない仮定の話はいいから
苫米地ってCommon Lispだから古さもC++と大差ないよね。
>>276 昔小さなlispを使ったらそれがよく止まるのでついソースを読んで手直しした。
止まることがほとんどなくなって関数の作り方など分かってきたのであったらいい
と思う関数を追加した。lispの処理系はこうなっているのかと理解できてCも上達
したと思う。だがlispはちっとも使えるようにならなかった。
教訓:lispの達人になりたかったらlispを使うこと決して処理系を作ろうとか読んで
みようとか思わないこと。lispを使うより処理系を扱う方が何倍もおもしろいので特
に気をつけるように。
決して構文糖を作ろうとかカスタマイズしてみようとか思わないこと。
計算機言語学じゃなくて計算言語学か。
計算機科学と計算幾何学ぐらい違うなw
「昔の」っていうのは「昔の目的」でしょ。
何を実現するかという目的。
CやJavaの技術者っていうのはその目的を実現する手法なんてのには興味がなくて、
常に何を実現するかということに重きを置いている。
だから手法が数学的かそうでないかなんてどうでもいい。
数学とかかっこ付けないで
昔から進歩してないって言えばいいのに
えー、わざわざ正確さに欠けた誤解を招く言い方をしようとするのは
頭の悪い人が自虐でやることでは。
数学的であるメリットがわからない。
そもそも、どこが数学的なのかわからない。
少なくともここにいる大半の人は分かるものなの?
Lisp は種類が多すぎる。
そりゃ元々は数学の論文から始まったのかもしれないけど、派生していく内にグダグダになってしまった感はある。
ひとくくりにすべきじゃない。
数学的であることのメリットはもちろんある。 性質を数学的な理屈で定義・検証可能というところ。
もちろん、それが重要でない (メリットと思わない) という考え方を否定することはできない。
「数学」という枕がついているとアレルギー的な反応をする人が多いのかね
別に何も怖いことなんてないのに
たいした意味もなく「数学的」なんてつけるから「定義されていません」と言われてしまうのだよ
荒れる議論といえば自転車置場だが、何も怖くないからこそ反応が多いんだよ
20年後も同じことを言ってそうな気がする
頻繁に規制で書き込めなくなるのですが
他に似たような掲示板ないですか?
HN はム板に近い感じだね
>>301 twitterって、他人に好かれやすい一部の人だけが100人とか200人とかフォロワー作って
会話を成立させられるサービスで、それ以外の人間は掲示板の代わりになんかとてもできないよ。
ツイッターは有名人と友達になった錯覚したいキチガイ向けサービスだよな。
ハッカーで人に好かれやすい人間って新規性の高い情報を常に発信し続けられる人間でしょ。
インプットしかせずにアウトプットが無い人間は申し訳ないけどあまり関わりたくない。
情報を出している側だって何らかのフィードバックを求めているからこそ
情報を出しているわけであって、フィードバックを返さないのはフェアじゃないよね
要するに人をうまく利用したいってことなんですね、わかります。
>>306 いやtwitterにいる以上はアウトプットすると思うぞ誰でも。フィードバックだって。
基本的に発信欲を満たすサービスなんだから。
というかこの会話自体、twitterじゃ一部のエリートさんがツイートしない限り発生しないんだよな。
>>304 使ってみてるけど、フォロワー数百人程度では掲示板の代わりにすらならなかったぞw
ただ、ハッシュタグつけたり、特定の単語だと検索ワードでウォッチしてる人から返事くることある
なので見習って逆にこっちも常に検索チェックしたり、ハッシュタグおったりして
困っている人や面白い話題している人に話かけたりしてみてる
そうすると徐々にフォロワーが増えたり、普通のつぶやきでも反応返ってくるようになる
ただ、twitterマンセーしている有名人みたいに「質問したらすぐに返事がかえってくるんです!!」とか
「(人多かったころの一時期の)mixiコミュの変わり」みたいな使い方はありえないなww
有名人でない限り
良くも悪くもリアルタイムなSNSだよw 敷居が極端にひくいだけで
>>305 それは位置側面でしかないと思うよ
長いんでまとめると、ツイッターには誰もが何かを言わずにはいられない魅力があるという事だな
ツイッターで何か発信してるLispハッカーいるのか?
いるなら使ってみたい
Twitter の文字数ではまともな発信は出来ないよ。
たった140文字だもの。
思い付きをたれながすか、面白いネタを見付けたら通知するとか、その程度だろう。
ブログを追う方がいいんでない?
それか、 WiLiKi や chaton あたりは比較的敷居が低いと思う。
和田英一たんが Twitter に書いてるぜ!
>>314 Lisperは発想の転換ができないと思わせるような書き込みはやめてくれ。
Twitterの強みは「組み合わせる」ということだよ。
いろんなWEBサービスを組み合わせてこそTwitterの強みがでてくる。
>>315 ブログも面白い。ウラム数なんて知らなかった。
>>314 > 思い付きをたれながすか、面白いネタを見付けたら通知するとか、その程度だろう。
それで十分というか、そっちの方が役に立ったりする
ブログに書いた記事を(誰かが)ツイッターで拡散するんじゃないの
Lisp の話題はそんなにないな。
>>319 最初からブログのフィードを RSS リーダとかで見た方がよくね?
はてぶとかと一緒で、知らない人が良い記事書いてるのが見つかったりする
Wada さんは native schemer っぽいよね
ツイートは記事の宣伝くらいでとどめてくれよ。
ツギャッターつかってもツイートだけの記事はよみにくいっての。
和田にさん付けされると、どうしてもスーフリの和田さんを思い浮かべてしまう
あれは和田サンだろ。
まぁ、あの人にさん付けするのは変だよな。
織田信長さんとか江崎玲於奈さんとか言わないのと同じ意味で。
だいぶ、話題がそれているような
ここから Lisp の話に流れを戻すのが今回のミッションである
貴殿の成功を祈る
和田サン懐かしいなぁ。
スーフリの勧誘チラシの画像持ってたはずなのに、どっか行ってしまった。
>>332 そうだな。俺の役目だな。
スーパーフリーに入るにはどうすればいいんですかね?
>>325 LispはもっぱらUTI Lispをお使いではないだろうかと思うが。
米国ではJavaScriptは全ての高校生の必修科目であり、
スタンフォード大学のコンピュータサイエンス学部生は
Facebookアプリを作って提出しなければならないそう。
韓国ではだいぶ前から小中学生は宿題をWordで作成し
オンラインで提出してると聞いた。
日本は教育が遅れてる。
約19時間前 Echofonから 100+人がリツイート
TaizoSon
孫泰蔵
↑これマジ?
入試の必修科目にJavascriptでも入れればいいんだよ
>>335 Blog では MIT Scheme を使ってらっしゃいましたよ
SICP糞訳の人か
訳としては(取りきれてないバグはあるけど)問題ないだろ。
古い教科書のスタイルで書かれた日本語をゆとりの若者が読めないだけで。
これだからにかわは
HHK共同開発の人だろう
プログラミングの教科書読むのに
古文の能力が必要な方がおかしい
なんでもゆとりゆとりって馬鹿みたい
原文は CC BY-NC で公開されているから勝手に翻訳して良いのかな?
独占翻訳権契約とかがあると面倒そうなのでイマイチ取り組めないんだけど、
和田さんにツイッターで聞けば良いのかな?
S和田さんのSICPの翻訳、質が低いから翻訳しなおして
ネットで公開したいのですが問題ないでしょうか?
S って何ぞ?
和田慎二?
>>342 別に古語でかかれているわけではありませんが。
「ゆとりは本を読みなれていない」というだけで。
ちょっとググってみたけど、逐語訳で、日本語的にこなれていないのが不評なのかな?
そもそも原文が無料で公開されてるのに
何でわざわざ翻訳で読む必要があるの?
言わせんな恥ずかしい
日本語になっていればより広く知識を共有出来るから、自分が英語をスラスラ読めたとしても、
分かり易い翻訳がある事は大事な事ですよ?
>>349 といって、超訳風にするのも訳者にとっては一種の賭けだったりするようで。
>>352 確かに学術書が母国語で読めるということは、普段は意識しませんが、非常にすばらしいことですね。
英語で読むより日本語で読む方が読みやすいからだろ
読みにくい日本語なんて価値ないわ
あれを読みにくいといっているようでは、基礎訓練がたりない。
スタイルとか逐語訳の問題より、
役者の力量不足って気がするけどな
翻訳するより、むしろ抄訳の方がニーズがありそうな気もする
他の日本語の本は普通に読めるけど
基礎訓練って何するん?
最初の方(というか序文)は訳がこなれてない感じはするけど
後の方はそんなに悪くないと思うけどなあ。
少なくとも、俺はあんなに広範囲の話題を扱った本を訳しきる自信はない。
あと、あれが読みにくいっていう人は『いかにして問題をとくか』あたりの訳文も苦手そう。
自分の力量不足を読み手に転嫁するとか
和田さんも地に落ちたもんだ
力のない信頼できない訳者の本を
難しい難しいって言いながら読んでて可哀想
分かりにくさがウリの本だからな。
こんな難しい本に挑んでいる俺スゲーって感じの。
SICPの翻訳は専門用語が実情と違う気がするね
>>364 それは確かにある。
bug を「虫」と言ったり、 GC を「ごみ集め」と言うのは昔からある訳語だけど
最近の本しか読まない人には馴染みのない訳語かもしれない。
まあでも、全体としてこれで訳語は統一されているし、
文句を言うのなら、これをそのまま通した編集者に言うところだと思う。
硬いけど、ちゃんと読めば意味がとれないところはほとんどないし
悪くない訳だと思うけどな
まだ読み終わって無いけど
SICPを新訳するよりSICMの方をやってくれた方が俺得
Lispと物理と英語の三重苦を乗り越える猛者おらんかね?
文の意味はわからないけど辞書の載っている意味を載せてみたっていう
水準に達してない英語の素人の翻訳
>>366 計算機用語以外は結構ひどい訳語があてられてたりするんだわ
でも、まぁ、原書よこせやゴルァァ状態ではないな
なんで翻訳受けたのか
自分は英語出来るって思ってるのだろうか
372 :
デフォルトの名無しさん:2010/06/20(日) 20:44:49
だれかDrSchemeでvecter-map手続きを使えるようにする方法知らないか?
>>372 SRFI-43サポートしてるからvector-map使えるよ。
PLTだと
(require srfi/43)
だっけ?
ちなみにRacketになってからは、組み込みになりました。
なんなんだこの酷い日本語訳を我慢して読むのが当然だみたいな流れは
本来なら和田サンが反省して謝罪すべきなんじゃないのか?
何万円もするキーボードを作って売る人にははした金かもしれないけど
うちらは少ない小遣いから捻出して買っているのに
>>375 じゃあ本人に謝罪と賠償でも要求してくればいいんじゃね
>>377 お前は実現可能性が薄い事をやれと平気で言うようなメンヘラか。
やるとしたら署名活動の方がまだマシだろ。
じゃあとっととサイトでも作って署名活動はじめろよ。
最近は署名活動支援サイトなんてのもあるし。
>>379 俺は
>>375じゃないぞw
まずは活動する前に同じように不満がある人がどれぐらいいるのか目安をつけるのも必要じゃね。
>>378 今だと twitter や email やらで突撃できるから
実行するだけならそれほどむずかしくないと思うけどなあ。
俺は
>>375 の望みが実現されなくても痛くも痒くもないし。
ああ、でも本当に突撃しちゃうと迷惑がかかるからよくないな。
絶版ドットコムに絶版リクエスト出せよ
訳のわかりにくいところを解説するサイトを作って
アフィリエイトを貼っておけば丸儲けじゃね?
lispでアフィリエイトとかどんだけ見に来る奴がいるんだよw
なんか敬意を持った態度のとり方のシラン奴らばかりだな。
ソファーに座って、葉巻を葉巻をふかしてる連中にみえる。
和訳本に完璧を求めることより英語を学んで読めるようにしたほうがいいよ。
sicpあたりは公開されてる。toeic 600くらいだったらその気になれば読めるようになる
消費者としてプロにプロとしての仕事を求めているだけのこと。
当たり前のことだろ。
これだけ消費者から苦情が出るということはプロとしての仕事が完遂されていないということだろ。
偉そうな態度はどっちだ。
問題だらけの訳本なんだから、せめて書き直せと言いたい。
俺が知る限りSICPの訳本は酷い出来だという評価がほとんど。
amazonのレビューでもwikipediaでも、おおよそこの本が紹介されるところでは
翻訳のひどさを指摘する声ばかりだ。
訳者の耳にも当然届いていることだろうと思う。
にもかかわらず何の手直しもしないというのはどういう事か。
消費者を馬鹿にするのもいい加減にしろと言いたい。
お前らもそう思うだろ?
大体さ、こいつ学生には厳しく当たるくせに、
自分自身には甘いんだよな。
プロ意識が低すぎ。
>>388 それはよくしらんが東大の学生だったの?ならば暴露しちゃいなよ。
でも、複数の人間がコメントしているような匂いがしないのはなぜだろうか?
>>389 理由はわかったはレスの時間の連続性と考え方の方向性が同じだからだわ
やっぱり、感情的な起伏を抑えられないならちょっと2ちゃんから離れたほうが
いいだろうな。
>>387 >お前らもそう思うだろ?
ぜんぜん。
人の同意を求めている暇があったら自分で動いたら。
>>344 にもあるように原文は CC-BY なんだから、
まずは権利関係がどうなってるか調べてみるとか
酷い訳は序章だけみたいだよ。
酷いのはSICPに代訳を書き込んだことある。
まあ日本語訳はごく一部しか読んでないけど。
SICPはこの板に専用のスレがあるのでそちらで。
こいつより学生の方が英語出来るだろ
カスはおまえだろ。
ちょっと古い調子の日本語を使ったらなんで「プロ意識」になるんだ?
>>360 和田先生の訳本が出たのは2000年で
いかに問題を解くかの訳本が出たのは1954年だぞ
訳者がその筋の権威だからといって無理に擁護するから話がこじれる
気に入らないなら無料公開されてる原書を読めで終了する話だ
本に載っている発行日と
実際に出た日付が異なるのはよくあること
病的に粘着な性格を持つ人みたいだから、放置しとくほうがいいよ。
>>385 敬意の問題とか個人の英語力の問題に摺り替えて何が楽しいのか知らんけど、
それじゃ若い人の賛同は得られないよ。
ちなみに俺は初めて TOEIC を受けた時から 600 点は軽く超えていたけど、
自分が読めると言う事と、良い訳本が必要であると言う事は全く別の問題
である事も知っているよ。
Racket/PLT
面白そう
日本語動くのかな
訳者のプロ意識に問題があると思うなら、本人に言えば良い。
消費者として支払いに応じた水準の物を得たい、という話なら出版社に言えば良い。
あるいは、公の場で批判を展開したいなら、然るべき場所ですれば良い。
何故ここに書き込むんだ? 和田先生も関係者もここには居ない。
恩も義理もないから、別に和田先生の擁護なんてしていない。
ただ、スレ違いだって言っているんだけど、それすら分からない国語力?
SICPはinfoになってるのが便利。
emacsで縦に画面割って片方SICP,片方処理系動かしておいてる。
最近のPCは画面広いから無理な改行がなくて良い。
>>407 君の過去のレスがどれだか知らんけど、そういう話がしたいなら
『スレ違いだから終わりにしろ』って書くだけで良いんじゃね?
もしかして誰かが賛同してくれるかもよ。
こなれた日本語の文章にするのを失敗したわけではなく、
意図的に原文をそのまま置き換えるスタイルを選んだらしい。
それが実際にわかりにくいと思う人がいる以上、選択が失敗だったんだろう。
で? だからどうしたという話なんだよな。 どうでもいいじゃないそんなこと。
この値段ならこんなものんだろ。
ID非表示のスレで何を言ってるんだお前は
>>412 残念だけど、みんなには伝わらなかったみたいね。
意図的に原文をそのまま置き換えるスタイルを選択したから
わかりにくいんじゃなくて和田が未熟なだけだろ
よくあんなん出していばってられるよ
何かもう噛み付きっぷりが暴れたいだけな感じだな。
この流れ、竹内本のときに非常に良く似てる。
どうやら和田擁護してる奴が発狂してきたな
>>411 値段の問題に摺り替えて何が嬉しいのか知らんけど、
どうでもいいならスルーしてなよ。
私は、
英語が不得意ですから、
LISPは直感で理解しにくい。
機械翻訳にLISPを使うならば、
役立つことは、知られている。
すでに、
プログラマーで
LISPが
わかりにくい人は、
基本的な、データ構造を、
アッセンブリ言語レベルで
理解に努めると、
きっかけがつかめる。
自分に対する厳しさが学生に対する厳しさの1/10でもあったなら、
こんなおかしな翻訳本は出してないだろうな。
自分に対する厳しさが他人に対する厳しさの1/10でもあったなら、
こんなおかしな書き込みはしてないだろうな。
気の利いたレスでもしたつもりなのだろうか
大部分の本を電子化して処分したけど
SICP日本語版は電子化しないでそのまま捨てた
プロの仕事って。小説なんかと違って、学術関係の翻訳は
日本語として読めるかどうかなぞどうでもよく
原文の用語や構造を極力保存した翻訳することこそが
伝統的にはプロの仕事。
解読不能な翻訳本が巷にあふれかえっている理由はそれか
和田の言い訳が見苦しすぎる
なんの為に専門知識を持ってる人に頼むかわかってないよな
大勢の読者は単なる翻訳じゃなくてその道の専門家による解釈を求めてるのに
いいかげんしつこいなぁ。もっと面白い話しようぜ。
shiroさんのIslandLife「言語Xは速い、というのは」とかその前の記事とか
語ること一杯あるだろ
じゃあRacketの登場でgaucheがいらない子にとかそういうのか?
>>429 学術書には訳者の意図・解釈が入り込むべきではないという考え方がある。
こなれた日本語にしようとするとどうしたって「意訳」になる部分が出てくるし、
そこには (原文にはないはずの) 訳者の考え方が反映される。
程度問題だし、今では必ずしも受け入れられないのはわかるけど、
和田っちは年寄りだしなぁ…。
ジェネレーションギャップってやつかもな。
専門知識があっても英語を出来ない人に頼んじゃ駄目だろ
連投するからクズ粘着がまるわかりだw
もう相手すんなよ
>>431 今のとこ、中身まんまPLT Schemeなんだから、何も変わらんと思う。
PLTとGaucheだと、目標は同じ実用でも、アプローチがかなり違うし。
むしろ、R7RSがどうなるのかってのが気になる。遠い未来だろうけど。
今後、PLTの連中が積極的に仕様策定に関わるとも思えない。
RnRSはサポートするって言ってるけど、言語としてのRacketでは、
Clojureばりに独自路線を突っ走りそう。
連投とか言って誤魔化すの必死だなw
R7RSをどうしたいのか、積極的に考えようぜ
まずは言いだしっぺからどうぞ
結局、ミニマリズム派と実用派の折衷案で、
Steering CommitteeのWG1とWG2ができたわけだけど、
どうにも前途に暗雲が立ち込めてるような。
WG2とかまとめる体力があるのかが謎。
RnRSとSRFIで良かったのに。
PLTの名称変更は、マーケティング的な理由以外に、
機能拡張で規格に足を引っ張られたくないってのもある気がする。
原理主義者に準拠度を指摘されても、これ方言だから、で済むし。
schemeの仕様なんてミニマムでいいだろ
ライブラリでカバーすれば良し
第一、仕様が複雑だったら簡単に実装できなくなっちゃうじゃんww
Lisperってジジイばっかで大変だなw
「○○は△△と本質的に同じだから興味がない」
とか流行を追いかけない言い訳を自分自身にするような老いた奴らばっかでキモい
流行を追いかけないんじゃなくて、ジジイは体力が無くて追いかけられないんだろうが
なんかスレを見ていたらありとあらゆる機会を華麗にスルーしているようにしか見えない
Scheme も CL も並列処理には滅法弱いイメージなんだよなあ…
schemeが巨大になったらreadable なCへの変換は遠のく
Armed Bear じゃない方の ABCL とか *Lisp とか、
あと Revised Report のころの Scheme にはプロセス生成のプリミティブがあったりとか
研究レベルだといろいろあるんだけどねえ
あと Termite というのもあったっけ
訳書のまずさといえば、「LISP原書第3版(I)」の編集のあらを探すことに
一時期熱中していた。15年以上誰もコレ指摘しなかったのかよwみたいな自己満足で…。
もう誰も読んでないだけじゃないの?
このスレの事かと思ってドキドキしちゃった
つか何だコリャw
> 中古品3点¥ 12,800より
あの壷はいいものだ
12,800円!
全国展開チェーン系の書店も既に風前の灯火だというのに、転売で目先の売り上げばかりに囚われて更に自らの首を絞めるというのか。
風前の灯と目先の利益か。
456 :
デフォルトの名無しさん:2010/06/24(木) 23:16:27
>>373 遅レスすまん
そしてレスサンクス!
scheme覚えたてで、困ってた。
Macのemacs23でgauche使おうと
.emacsに
(setq scheme-program-name "gosh")
て書いてschemeのコードを評価しようとしたら
output file descriptor of scheme is closed
って出る
>>457 "gosh" じゃなくて "gosh -i" としても駄目?
>>459 うまくいきました
ありがとうございます
SICPの2版で
Logic Programmingが
amb
じゃなくて
stream
ベースになってるのはなんで?
ambの方が自然な気がするんだけど
段落でまとめずに
1行おきに
短く書くのはなんで?
非決定
まで
導入するのは
やりすぎ
と思ったからでは?
というか
4.4.2-2
紙じゃないんだから
スペースケチらずに
読みやすく行間空けろよな
って電子書籍とか
読んでて思うわ
タッチタイピングだと目が疲れないのと同じで、行間は適切な大きさの方が視線を大きく動かさなくても済む。
そ
れ
は
わ
た
し
の
お
アタシ
ポール グレアム
だからさ
ねぇ
lispしてよ
国産LISPマシンELISの設計者である、JAIST副学長日比野先生が、この夏、ELISの復活祭を企画されています。
復活祭には、竹内先生をはじめ、TAO/ELISに関わった方々に多数ご講演いただきます。
会場が石川県とちょっと遠いですが、小旅行気分で、ぜひぜひ多くのLISPファンのみなさまにご参加いただきたいと思います。(yshigeru)
日時:8/7(土)〜8/9(月)
場所:JAIST(石川県美濃市)
詳細と参加申し込みは、ELIS復活祭ページをご参照下さい
http://www.jaist.ac.jp/elis-revival/home.html
biglooはなぜemacs21をmakeで必要とするんだろうか
emacs23じゃなぜダメなんだろう
石川県てどこだよ
東京でやれよ
それより石川県に美濃市はないだろww
能美市だろ!
また竹内とか変な信者きたのか
>>471 俺の実家の近くだ。よく覚えておけ。
JAIST周辺は山しかないからな!
こんなの3日間もやるの?
ゲストでグレアムが来るなら
行きたい
うわー。またよくわからないイベントがきた。
しかも、あの閑散とした牢獄のような場所に。
あちこちに石川県美濃市をマルチポストしてて
恥ずかしい
じいさん達が昔を懐かしむイベントか
石川は小旅行って距離じゃないと思う
matz も出るのね、遠くなきゃ行きたいなぁ
>>469 なんで今更ELISみたいなゴミを復活させる必要があるんですか?
メリットは何ですか?
今時ページがPDFって(笑)
しかも論文って(笑)
もうサイト見ただけで古さがにじみ出ていますね(笑)
こりゃもう本格的にLISPはダメかもしれない
こんなんじゃいつまで経っても若い人は集まらないねw
こんなの若い人に見せて
何がしたいんだろ
なんでELISが中心なの?
展示品のひとつくらいの扱いが妥当でしょ?
LISPの集まりには将来的なビジョンがないんだよね。
ちゃらけた勉強会でもモナドを実装してみましたーとか、将棋ソフト用のDSL作ってみましたーとか
そういうお遊び的なものばかりで、何か計算機科学的ないしはソフトウェア工学的な進歩が
全然感じられないんだよね。
懐古主義ばっかりで若い人からしたら面白くないんじゃないかな。
若い人取り込まないと廃れるばっかりだよ。
> 後援: 情報処理学会歴史特別委員会
wwwwwwww
このイベントってLISPやってる院生のために論文実績・発表実績つくらせる目的で開催してるの?
笑()
2010年の技術力で設計した 64bit 時代の新しい LispMachine を発表します!
とかないかなー
>>494 LISPマシンなんてただのオモチャじゃん。
JAVAバイトコードがネイティブで動くJAVAチップっていうのもあったけど、
結局はINTELチップのほうが進歩も早くて、VMで動かしたほうがメリットが大きかったから廃れてしまった。
LISPマシンもJAVAマシンも歴史的に同じことを繰り返したに過ぎないんだよね。
そういう歴史を踏まえて、新たにLISPマシンを作るメリットって何なんだろう?
たしかに微妙すぎるイベントだけど
この憎悪に凝り固まったレスの数々には引いてしまうな
つまりインテルがLISPマシンを作れば最強
年寄りの懐古主義ーとはいうものの、車輪の再発明しても意味ないし、
長い分知識も動向も上なのだから、アイディアゲットするために
結局それに付き合うしかないよ。
文書で残してくれるかどうかなんてわからないんだから。
ヒント レス時刻
>>498 車輪の再発明の例:
rubyインタプリタを実装してみました←既にあります
車輪の再発明でない例:
世界最速のrubyインタプリタを実装してみました←早いということはアルゴリズムが違うのだろう。新規性高し。
> 早いということはアルゴリズムが違うのだろう
自分の無知を晒して楽しいか?
>>501 無知だということは自覚していますが、
さらに深い考えをお持ちでしたら、そのお考えをお聞かせ願えますか?
待ってみましたが、レスが有りませんね。
理由もなく批判したい年頃の子供だったということか。
あと3年で、世界は江戸になる!
Matz来るの自費じゃないよね?
情報処理学会が金だすの?
嫌だなあ
RubyはRubyの道を進めばいいんだよ。
情報処理学会歴史特別委員会っていらないだろ
ELISってDOSエディタ使いやすかったな
俺も使ってわー
中学校の PC には Vz が入ってたんだけど、
中高生の小遣いで Vz は高いからなぁ。
似たような操作感の Elis はたいそう重宝した。
matzって何でLispに擦り寄ってくるの?
別に使ってもいないのに
しかもマクロ嫌ってる癖にな
matzはperlとSmallTalkの方だけ見てろよと
大学のお偉いさんは沢山いるのに、
現代版LISPの1つも作れない事実
Elisが昔の現代版LISPだったんだよ
復活祭やるほどのもんでもないと思うが
処理系ばっかりたくさんあるのに
ライブラリーがダメな状況に通じるものがあるな
出た当時から駄目っぽい匂いがしてた
今で言うMicrosoftのKINみたいな
>>512 現代版Lispって、今のLispのどこに不満があるの?
なんかしょぼいの取り上げるんだな
いくら日本がIT後進国でも
もうちょっと何かあるだろ
これは過去の失敗から学ぼうってイベントなの?
大学の研究室にNTTの人来たけど、
すぐに廃れるって言ってすげーやる気なかった。
何で研究室に来たのか
Elisのイベントじゃなく
Rubyのイベントにした方がいいだろ
そんなことしたらLISPで研究発表できる数少ない場所が無くなるだろ。
糸色望
>>496 憎悪というか、懐古主義って年寄りは昔を懐かしむだけで、
若者にとっては何の感慨もないから面白くもなんとも無いし、
全体的に後ろ向きなイメージしか無いんだよね。
それをやることで何か将来的な展望が開けたりするのかというとそうでもなさそうだし、
若者にとっては不愉快以外のナニモノでもないだろうね。
若者は憎悪以前にElisって何のことかわからないだろ
Elisの情報あるのnue.orgだけだし
これ黒歴史かと思ってたが
開発者は自画自賛してるのか
きんもー☆
ちょっと色々と私物化しすぎだと思う
日比野はもう辞めた方がいい
後世に役に立つもの残せなかったんだから、
でしゃばらずひっそりと消えてくれよ
lisp のGCやλ関数は、ようやく最近の言語に取り入れられるようになったわけで。
当時の lisp は進んでいたのだが、あー、もう随分昔に停滞してしまったんですかね。common lisp よりあとで発展したものはありますかね?
Allegroの処理系とか、「発展した」と言っていいんでないの?
Elis祭ってなんだよ
lisp祭にしろよ
>>530 ようやくって、もう相当前から当たり前になってるけどw
>>530 Clojure。他の関数型からエッセンスを取り込んだモダンなLisp。
Arc。ひたすら実用指向の、様々な新しい取り組みをしているLisp。
他にも、R6RS Schemeのマクロにおけるsyntactic closureとか、
割と新しい概念も出てきてる。他の言語に取り込めるかは別だけど。
昔ほど影響力を発揮していないのは事実だと思う。
ユーザが他の多くの言語に分散してしまったし、
他の言語の表現力も高まったから。
Arcっていまどうなってるの?
去年に3.1が来てから動きなし。
235 名前:デフォルトの名無しさん[sage] 投稿日:2009/08/09(日) 03:16:45
3.1 きたね
最新のMzScheme対応
236 名前:デフォルトの名無しさん[sage] 投稿日:2009/12/03(木) 20:49:25
どうよ、最近
クリスマスの予定は決まったか??
237 名前:デフォルトの名無しさん[sage] 投稿日:2010/01/11(月) 23:30:12
言語仕様書みたいなのって無いの?
238 名前:デフォルトの名無しさん[] 投稿日:2010/02/04(木) 23:28:10
すっかり過疎ったな
239 名前:デフォルトの名無しさん[] 投稿日:2010/04/08(木) 21:08:21
誰か使ってる奴いる?
240 名前:デフォルトの名無しさん[sage] 投稿日:2010/05/02(日) 16:23:33
ちょっとだけ
ただ、一応付け足しておくと、Jarcの開発は活発だし、
本家のforumは↑まで過疎ってない。
実権用リポジトリがあって色々やってるみたいよ<arc
Elisみたいな失敗したプロジェクトのイベントを
3日間もやるなんて恥ずかしくないのか
必死で誹謗中傷を自演するとか恥ずかしくないのか、この馬鹿
matz使って人集めしてるくせに
Elisなんてタイトルにつけるのは図々しいだろよ
543 :
デフォルトの名無しさん:2010/07/06(火) 07:17:56
今からやるなら何がいいの?
方言が多すぎて何を学べばいいかわからないんだが・・・
Elisなんて関係者が著しく必死に宣伝しなきゃ
存在する認識されないゴミの復活祭を
3日間もやる方がおかしいって気づけよ馬鹿
どうせみんなmatzの話聴きに行くんでしょ?
石川までわざわざElis起動するとこ見て拍手しにいくとは思えないし
遺跡を発掘するようなおもしろさがあるのじゃないか。俺は行かないけど。
>>543 とりあえず、 Clojure がお勧め。
何といってもモダーンで、STM とか遅延シーケンスとか入ってるし、
java ベースだからライブラリも山ほどある。
参加者一人とかだったら楽しいね♪
Elis起動しました
パチパチパチ
Elis記念祭、定員が32000人とかなってんだけどw
TAO/ELISは、携帯電話なんて話にならないほどのガラパゴスだった。
専用ハードに、ほぼ単一に近い言語環境。
電電公社ならではの採算も将来性も度外視したプロジェクト。
AT&Tが作ったベル研究所とはえらい違いだな
第五にしろELISにしろ、何で日本には馬鹿しかいないんだ
その馬鹿が今でも自画自賛し続ける馬鹿であり続けるのは何でだ
第五の方はしっかりとした論文出してたぜ。
ベル研究所すげー
ノーベル賞だらけじゃん
どうせなら3日でRunyをLispに移植しろよ
普通の企業でやったら倒産するようなプロジェクトを
誇らしげに若者に見せるのか
prologやlispが全然流行らないのは、こういう失敗を失敗と
正直に言わない人がいる気持ち悪さが原因のような気がする。
え?これで成功なの?ふ、ふーん・・・あんまり面白くなさそうね・・・w
って感じ
NTTは今ではITゼネコンとして業界の足引っ張り役
Elisとやらもおまいらも成仏してくれんかなー
変なプロジェクトもいつまでも悪口を言い続ける奴も老害
565 :
デフォルトの名無しさん:2010/07/06(火) 16:36:53
clojure(笑)
567 :
デフォルトの名無しさん:2010/07/06(火) 17:39:44
Gaucheってどうなの?
>>543 とりあえず、TAOがお勧め。
何といってもマルチパラダイムで、論理型パラダイムとかオブジェクト指向パラダイムとか入っているし、
独自ベースだからライブラリ殆どなくて、すぐ覚えてしまえる。
()
Javaベースの言語は卑怯
男なら自前で勝負しろよ
>570
マシンごと作ったTAO/ELISの大勝利だな
自前で勝負して負けたわけだが
573 :
デフォルトの名無しさん:2010/07/06(火) 23:00:27
>>568 資料が少なすぎる気が・・・
探してみます
>>543 Lispの主流な方言はふたつあって、Common LispとScheme。
Common Lispは実用が信条。Schemeは単純さが信条。
個人的には新興のClojureを勧める。
>>567 作者が仕事で使ってるから実用指向。
速度もライブラリの充実度もそこそこ。
日本語でコミュニケーションを取れる。
>>574 わかりやすい解説ありがとうございます
Clojureを勉強してみます
clojureとかやめとけって
javaのapiが使えるとかいうウリだけど、
実際書いてみるとすごい不自然で使いにくいから。
ロジックの部分は便利なんだけどね。
common lispが一番いい
ライブラリも揃ってるしな。
SICPって略の本とポールグレアムの書いた本
読破すれば、どの処理系でもとりあえずおk
>>577 マクロでLisp的なインターフェイスにしたりしないの?
個人的には、Clojureの欠点は、Java仮想マシンで動くってことだと思う。
最大の利点でもあるわけだけど、それによる制限も大きいんじゃないかと。
582 :
デフォルトの名無しさん:2010/07/07(水) 01:09:07
>>582 全部Lisp語族なのは確かなので、ひとつ覚えると他に移るのも割と簡単。
というか、Scheme使える人は高い確率でCommon Lispも使えるし、逆も同様。
ClojureやArcも似た様なもんだし、適当で良いよ適当で。
>>580 両方買ったけど俺にはさっぱりわからんかった。
ごく基本的な部分がわかってなかったので
思想的な部分から解説してくれる 初めての人のためのLISP を読んでる
雑談が多いので好き嫌いはわかれるが雑談飛ばして読むとすごく読んだ気になるのもよい。
376 名前:仕様書無しさん[sage] 投稿日:2010/01/30(土) 09:14:30
興味のある言語にLispと書いておいたら面接で爆笑された
Railsエンジニアを募集してる会社の採用面接を受けた時の話。
転職エージェントに作れと言われて作ったシートに、「興味のある技術/言語」という欄があったんです。
仮想化技術とか色々書いたけど、プログラミング言語の中で興味があるのはLispだったので、
Lispと書いておいたのですが、それを見た面接官のリアクションが酷かった。
面接官「Lisp・・・ふははっ!Lisp!」
面接官「Lispやってるんですか?wwwww」
俺「(唖然)は、はい・・まだS式を理解したぐらいですが。。」
面接官「Lisp・・・ニヤニヤ」
その人はエンジニアで、当然Rubyのコードを書いている人だったので、
Rubyが「Matz Lisp」と呼ばれている事を知らないワケが無いだろうと思っていた。
つまり、このリアクションは"理不尽な状況に直面した時にどう対応するか"を見ているんだろうと判断し、あえて突っ込みは入れずに対処した。
しかし最後の質問で「何故RoRを採用したんですか?」と聞くと、
気まずそうに理由を話し、最後に「・・・と、聞いてます」と答えた。
つまりこの人は上からRubyを採用すると言われたから使っているのであって、
特別Rubyに思い入れとか無いリーマンエンジニアなんだなあと分かった。
mix-inとかもLisp発のテクニックだし、RubyやってるならLispに興味を持つのは普通だと思うんだけどなあ。
多分ガチで知らなかったんだろう。
一番綺麗なCを吐いてくれるのはbigloo?
Gmbit-Cのコードなんて汚すぎてみれなかった
変換したコードに意味があるのかい?
初めては余計な雑談が多くて内容が薄い
読んでも力は付かないよ
変換後のCコードを改造したいから綺麗な方がいい
最初っからCで書けよ・・・
だが断る
LISP系の言語を特定の手続き系言語に置き換える処理って、
セルをパースしていって子のセルに依存することなく
演算結果を出せる所までたどったあとは、
それらの計算を順次それぞれの言語へ変換してやるだけでいいんかいのう?
型情報の扱いがめんどい
>>583 > Scheme使える人は高い確率でCommon Lispも使えるし
SICPの影響でこうは言えない時代だと思う。
CL以前に、Schemeは小さい仕様のせいで独自実装や処理系限定のライブラリが普段使いにも頻出するから、処理系Aは使えるけど処理系Bだとわかんない無理ってのがあって困る。
そのためのR6RSとSRFIだけど、
R6RSは主要処理系開発者に反対されまくって半ば頓挫、
SRFIは基本的なもの以外は対応が遅くてもう駄目。
みんなでGauche使えばおけ
ガッチェ?
599 :
デフォルトの名無しさん:2010/07/07(水) 20:30:50
common lispをやってから決めることにしました
丁寧にありがとうございました
興味のある言語にTaoと書いておいたら面接で爆笑された
Railsエンジニアを募集してる会社の採用面接を受けた時の話。
転職エージェントに作れと言われて作ったシートに、「興味のある技術/言語」という欄があったんです。
仮想化技術とか色々書いたけど、プログラミング言語の中で興味があるのはTaoだったので、
Taoと書いておいたのですが、それを見た面接官のリアクションが酷かった。
面接官「Tao・・・ふははっ!Tao!」
面接官「Taoやってるんですか?wwwww」
俺「(唖然)は、はい・・まだS式を理解したぐらいですが。。」
面接官「Tao・・・ニヤニヤ」
その人はエンジニアで、当然Rubyのコードを書いている人だったので、
Rubyが「Matz Lisp」と呼ばれている事を知らないワケが無いだろうと思っていた。
つまり、このリアクションは"理不尽な状況に直面した時にどう対応するか"を見ているんだろうと判断し、あえて突っ込みは入れずに対処した。
しかし最後の質問で「何故RoRを採用したんですか?」と聞くと、
気まずそうに理由を話し、最後に「・・・と、聞いてます」と答えた。
つまりこの人は上からRubyを採用すると言われたから使っているのであって、
特別Rubyに思い入れとか無いリーマンエンジニアなんだなあと分かった。
mix-inとかもLisp発のテクニックだし、RubyやってるならTaoに興味を持つのは普通だと思うんだけどなあ。
多分ガチで知らなかったんだろう。
ここ何年かで見たコピペ改変のなかでも一番ひどい
>>599 いい選択だね。Common Lispを学ぶのは孤独で長く険しい道だが、がんばってくれ。
Peter NovigもPaul GrahamもSICPマンセーみたいだが。
>>599 Common Lispが良いと思って決めたんなら良いと思うぜ。
Clojure勧めたけど、俺が普段使ってるのもCommon Lispだし。
定番のSBCL、WindowsやMacで便利なClozure CL、軽量なCLISP辺りがお勧めだけど、
どの処理系を使うか迷ったらCommon Lispスレにどうぞ。
REPLで遊ぶと理解が進みやすいから
CLだったら、LispBoxかxyzzy
schemeなら、GaucheboxかRacket
辺りじゃね?
TAOって全く同じ名前の別の言語を3度も作っているんだってな
どういう頭しているのか
世の中に影響を与えなかったから出来る芸当だな
2ちゃんねるで悪口を言えば世の中に影響を与えられると信じている馬鹿だからできる芸当だなw
大した業績でもないのに、
神様とかいって擦り寄っている連中が気持ち悪い
この人、Lispの神様とか言ってて恥ずかしくないの?
海外でも自分のことLispの神様って言っているの?
>>607 実際に影響がある場合もある。
時と場合ややり方にもよる。
TAO/86と呼ぶ(キリッ
とか言って呼んでいるのが一人しかいない件について
TAO/ELISって情報が作った人間たちのところにしかないよね
自分たちで声高に叫ばないと存在した痕跡すら残らない
自画自賛の復活祭なんてものまでやる始末
誰が神様なんて言い出しんだろうね
目を瞑って、ここは暗闇ですねと叫ぶ馬鹿がここに一人
神様とかTAOとか天才とか
言葉で大きくみせるのが好きだよなこいつ
IT詐欺師じゃないの?
神様の書く文章も意味不明な寝言だけど
信者の擁護も意味不明だ
少し前にCommon Lispスレが立った時の挙動がおかしかったので
いろんな疑惑がある最中なのにやるんだ
同じ時期に、どう書くのCommon Lisp荒らしたのも同じ奴かな
http://ja.yourpedia.org/wiki/2ch 2ちゃんねるは、いくつもの電子掲示板の集合体である。
ウィキペディア日本語版では証拠不十分であることを理由に、
実際の運営方法については一切述べられていない。
2001年当時、西和彦の「煽り屋がいる。いれば繁盛するから。」という指摘に対し、
西村博之はこの存在をきっぱりと否定している。
すでにこの時点で、ユーザーのアクセス数に応じて多彩なBOT返信を
スクリプトを用いてスレッド上に書き込むプログラムが組まれていたことが判明している。
スレッド上にノイズが多い場合は、自動返信がなされているものと見て差し支えない。
> すでにこの時点で、ユーザーのアクセス数に応じて多彩なBOT返信を
> スクリプトを用いてスレッド上に書き込むプログラムが組まれていたことが判明している。
> スレッド上にノイズが多い場合は、自動返信がなされているものと見て差し支えない。
残念ながらこの記述は、ウィキペディアに張り付いてる同類の変な人が書いたものでしょう。
暇な馬鹿が必死になってやってるだけですよ。あるいは未踏の応募を蹴られた私怨か。
>二進法では,1と0の調和が大きな意味をもちます.すべてのバグはそこから生まれます.
信者の人ってこんな文章読んで、
なるほどとか、素晴らしいとか、為になるとか思うん?
こいつらが大金つぎ込んで作ったシステムがゴミだったから
今の日本の惨状があるのに、そいつらが若者に何を伝えるの?
竹内節って言い方がかっこいいよね
実態は意味不明な思いつきの羅列を口走っているだけだけど
流石に粘着し過ぎだろw
そんだけTAOへの歪んだ愛があるなら再誕祭乗り込んでこいよ
もしくは別のスレ行け
みんなはTAO祭行くの?
バイファムの主題歌がどうしたって
それなりに能力はあるんだろうけどハイパーメディアクリエイターの人と
似た臭いがするよね。
仲間同士で凄い凄い言い合っていれば凄くなる
webのページランクと似たような仕組みですな
神様にまでなっちゃったけどw
みんな本気で神様たって思っているの?
まわりが言っているからオウムみたく繰り返しているだけでしょ?
ラーメン
とりあえずお前が不幸なのはゴミシステムのせいじゃなくお前のせい
と、透明なエネミーに向かって信者が猛攻撃。
ゴミシステムの存在は認めるわけだ
成果をあまり公表してないので、評価しようがないと言うか、
評価としてはかなり下げざるを得ない。
ソースコードでも出せれば、奇特な人がエミュレータ書くかもしれないのに。
まあ第5世代のKL0もソースコード出すの遅かったから、
関連者研究室でもほぼ放置状態だが。
祭りのページがPDF&論文募集とか、20年前のやり方そのまんまで古臭い古臭いw
今時の勉強会とかのほうが遥かに情報化が進んでるよw
>>633 KL0ではなくて、KL1のフラット版。フリーになってるのは。
>>634 最初に情報が出たのは ATND ということも知らない情弱だという告白乙
おまえらどんだけ業界談義で愚痴ってるんだ
プログラマ板へどうぞ
>ソースコードでも出せれば、奇特な人がエミュレータ書くかもしれないのに。
先にやられたら論文のネタに出きないだろが
馬鹿だなーこのオープンソースの時代にそんなことw
オープンにすることによって参入者が増加して様々な需要が生まれるわけで、
論文のネタはそういう需要から抽出していけばいいだろ。
暇をもてあましたニートとか
思いつきをいきなり公開したりするからな.
論文書きたいならクローズドな環境のがいいんだろ
ニートに負ける研究者ってなんだよw
いまどきのニートはTOEIC900平気で超えてて、
海外の開発者とチャットしてたりするからな
そこまでのニートは知り合いにはいないな。
せいぜい860だしチャットもしないで
フォーラムに時々書き込む程度か
TOEICの点は知らんが、実際にすごいニートは一人知り合いにいる。
しかしそういうのはごく一部だろ。
身の回りには少なくても
全国的に見れば結構な数になるな
優秀でやる気もあるなら普通は仕事するだろ。
金があれば活動範囲も広がるんだから。
ニートっていうだけで無能の証明なんだよ。
純粋な数学者なら、実用的な成果がなくても開き直れるのになあ
頭坊主にして下駄とか履いているからな
やる気があっても無理でしょうな
なにをやってもニートは他人に
迷惑かけるだけってコトだな
クローズドなソフトを移植しただけって論文は割とある
おれもクローズド派だなー
オープンにするなんて実際とんでもないよ
他人がどうしようが勝手だし、
オープンな素材はとことん使いまくるけど、
自分は一生クローズドに徹するだろうね
オープンがクローズドと同じ儲けを出すには
10倍売らないと駄目ってばっちゃが言ってた
研究者がニートや暇人と勝負したら負けるに決まってるから
誰にも見せないし興味ももたれないようなクローズド環境を
ターゲットにしないマズイわけか
誰だって自分が一番になれる領域は欲しいもんな
neetが気になって仕方ないのか
オープンソースで環境的には差がなくなってきているし、
雑用しなくてすむ分、ニートや暇人の方が上だったりして。
そういう怨み節は本番までとっておきなよ。交流会あるのだし、当日それとなく
言えばいいじゃん。
俺もニートなってみたいから
ベーシックインカムこねえかな
なればいいじゃん!!
深く考えても休むようなもんだから!!!
行くとしてもmatzの来る3日目だけだな
そうか。
実際、俺の卒論もクローズドだったしな
中身は関係ない
実名でまともな言葉遣いで所定のフォーマットに従えばオープン
さらに英語で書けばこの上なくオープンである
arxiv.org で流れてれば open
そうでなければ closed
slashdotのしきい値以下うんぬんって
役に立つと思ったこと一度もないけど
いいものなの?
if文ってパターンマッチのシンタックスシュガーだよねー
(if (print "初期化処理するよ") t
(print "失敗したよ"))
最初にこういうコード見たとき
意味が分からなくて悩んだ
>>617 SICPやOn Lispに自然言語処理のサンプルついてるの知らない人がいる
自動応答プログラムなんて簡単だろ
SICPの練習問題の中にも確かなかった?
画像作戦か、なかなか頭ええな。
>>671 日本語の形態素解析→意味解析とかやってみたことないのか?
(if a b c)
について、aがパターンマッチの関数の時は
「条件aの場合、bである」
だけど、aが手続きの成否を返り値にする関数だと、
「aを実行して、エラーが出たらcを実行する」
みたいにだいぶ意味が変わる
初心者の俺は、if文≒パターンマッチ だと理解していて
パターンマッチ→エラー処理ってなんか変だなと思ったのだな。
if文→パターンマッチ と if文→エラー処理
みたいに分けて理解すれば良かったのかなというか
>667を見て?俺の理解はまだ浅いの?と思って
食いついてしまった次第なんだけども
いや、if のどこらへんがパターンマッチなんだ??
全然別のモノだと思うんだが
if True x _ = x
if False _ x = x
merdだっけ?では実際にこう定義されてる
>>674 過去に同じ動詞を使った「あおり」レスがないか過去ログをサーチする
名詞部分だけレス対象に会うように書き換える
これだけで自動あおりプログラムの完成
ATN使えばもっと高度な造り込みもできるだろうね
>676
本当に知識ゼロに近い初心者は
if(a=1){print("t");}
は「aが1と"一致"した時...」って考えたりするけど、それだと
if(!init()){error();}
はややこしいでしょ?(条件判定する時に副作用で初期化とか分かりにくい。
超初心者には同じ関数が二回使われてるように見えるんだよ)
Lispで評価器の振る舞いを勉強した後だと、素直に
「aを評価する、その結果が真ならbを評価する、偽ならcを評価する」
(その時に副作用がある)って考えるから悩まないよね?
話を戻すと、要は、>667を見て、何だろう?と考えるだろ。
だったら先に突っ込んでくれよ。
俺は>667の見解と対立してそうな>669をとりあえず例示したんよ。
>669はパターンマッチと全然別のモノに見えるでしょ?
長文uzeeんだけど、>670は、俺が「何の役に立つんだ?」って言ってる
奴だと思っているとも解釈できそうなんでとりあえず俺必死なんだよ。
画像で煽られたらどうすりゃいいの?jpgで31.1KBあるから、
62.2KB反論すりゃいいの?面倒くさいのでやらないけど。
後、>672のアニメキャラが誰か分からんけど
朝になったら起こしてくれるverをくれ
>677
良く分かんないけど、そういうレスを期待してたの。
俺の知らない話。gj
どう見当違いしたのか分かってきた。反省中。
haskellの文法とか、構文解析とかやるべきなのか。
馬鹿の相手をさせてしまってスマン。
恥を忍んでついでに聞くんだが、
"最小のLISP"はcondを必要としてるんだけど(Wikipedia)
それと>677みたいな定義とパターンマッチとの関係
がさっぱり分からないよ。
>681
"最小のLisp"にcondがあるのはプリミティブにprognを含めてないからだと思う
この場合ifとprognはcondを使って定義できる
逆にifとprognがプリミティブならcondはifとprognで定義可能
構文の数を最小にするならcondをプリミティブにするよね
パターンマッチとifもどっちかがプリミティブなら
もう一方はシンタックスシュガーとして定義できるはず
どちらをプリミティブとするかは言語の思想によって違う
>>681 引数の評価をいつするか考えてみて。
遅延評価の言語はifもcondもプリミティブとして必要ない。
>>683 ちょっと疑問
評価規則が関係するのって分岐処理を関数で実現できるかどうかじゃないの?
遅延評価だろうとifやパターンマッチに相当する
分岐機能がプリミティブに必要だと思ってたんだけど
>>684 if や cond が関数でもいいけど、 predicate でない then 部分や else 部分は
遅延評価じゃないと困らないか?
# まぁ、closure 渡せばいい話だし、実際、small-talk の制御構造はそのノリだよな
えーと、遅延評価の言語だと、condやifが必要ない、
って事は、delayとforceで実装する事になりそうですよね。
そこで>677のパターンマッチ使った定義に戻るんですけど、
ifを公理とすると、パターンマッチは定理みたいな関係
だと思ったんですよ。より複雑なモジュール使ってるから
>677みたいな事ができる。
また話を戻すと、delayとforceでパターンマッチを実装する
事ができればいいって事なのかな?
うう、自分の言っている事がさっぱり分からないぜ。
最小のLISPって名前から、チューリングマシン
の事を思い出した結果がこれだよ!
「最小のLISP」って紹介されてるのとは別で、
ジョン・マッカーシーのオリジナル版lispこと
「純LISP」は、
car,cdr,cons,atom,eq
だけでチューリング完全だ。
俺はどうしたらいいんだよ。
>>684 ミニマリズムを目指すなら、分岐機能だって関数さえあればできるぞ。
>>686 delayとforceはeagerな言語で遅延評価を実装するための仕組み(のひとつ)。
言語自体が遅延評価のセマンティクスを持っているならそもそも
「delayとforceで実装」などとは考えない。
わからんかったらラムダ算法でぐぐれ。
数字・文字自体関数で表現できるしな。
遅延評価で分岐なんてできないだろ
何言ってんだおまえら
出来るよ。
ラムダ計算の基本だろうが。
>>687 5つ手続きがあれば全ての手続きは実装出来ますよ、ってことだね。
CPU命令の一部しか使わないから実行最適化はされないけど。
>>692 setq が実装できるわけじゃないのでその説明はおかしい
>>692 逆にその命令だけを実装すれば最適なんじゃないの
チャーチ真理値を試しに実装してみればいいんじゃね?
(define t (lambda (x y) x))
(define f (lambda (x y) y))
(define if (lambda (p x y) (p x y)))
schemeは正格評価だけど、これらも一応動く。
けど、(if f (display "evaluated\n") 1)はevaluatedが出力され、1を返す式になる。
だからschemeではifやcondは手続きじゃ実装できない。
ifの中でdelayやforceをいくら使おうが無理。マクロを使う必要がある。
マクロもsyntax-rules使わないと実現できないかも?
遅延評価=非正格評価のhaskellなら、上の定義で十分。
t = \x y->x
f = \x y->y
my-if = \p x y->p x y
これで望みどおり動く。
my-if f (putStrLn "evaluated") 1も単に1を返す式になる。
>>696 言わんとすることはわかるが、Haskellの例で副作用を使うのは無理あるだろ。
bottomあたりを使っといたら。
Schemeの場合はマクロを使って遅延部分をlambdaでくるむ。
(define t (lambda (x y) (x)))
(define f (lambda (x y) (y)))
(define-syntax my-if (syntax-rules () ((_ a b c) (a (lambda () b) (lambda () c)))))
ラムダ計算が強力らしいのは分かったけど、
純LISPにdefunが含まれてないから、lambdaを純LISPでまず実装するの?
逆にlambdaを使わないifは可読性のあるコードになるの?
チューリング完全かどうかの話なんだが
>>698 チューリング完全ってのは計算能力で言うところの万能性を表すものだけれど、
「リソースが無限であれば」という但書付きの万能性。
時間も記憶容量も無限であれば同じことが出来るというのを裏返せば
時間に限りがあったり記憶容量に限りがあれば等しくない場合もある。
効率のことなんか考えてない。 あくまで理論上の話だよ。
例えて言うなら、機械語でプログラミングするときにはクラス定義とか出来ない
とかそんなことを言ったところでどんなプログラムでも機械語で表現し得るだろ。
要はそういう感じ。
VBでLISP実装すればLISP使えるだろ、と同じ
よく考えたら、defunはインライン展開して
いけばいいだけか。リソースが無限だから
展開が無限ループみたいな場合も気にしなくていい?
LISPで金融工学って本ある?
インライン展開は、パターンマッチして置換する手続き
じゃないか!
むしろ、ラムダ計算式を規則通り置換していくのは
ラムダ計算そのものだよ!
言語処理系がやっているのは、
人間に読めるシンタックスをラムダ計算式に置換していく事と
ラムダ計算式を計算する事
であって、どっちも実は同じ置換手続きだから、変換規則を
If True x _ = x
みたいにまとめていいって事か。
lambdaを含む言語「最小のLISP」をコンパイルして
チューリングマシンである「純LISP」のコードにする
という関係なのか。
パターンマッチとifが排他的に実装されているというのも
どうも違う気がしてきた。
lambdaでifが表現できるから「最小のLISP」に
ifは必要ないはずだけど、先行評価の場合は特殊形式として
必要になる、という事であって
パターンマッチはラムダ計算手続きの一部であり関係ない。
あと、
シンタックスシュガーは、対応するラムダ計算式が一致している構文
という意味であって、やはりifがパターンマッチの云々というのは
やっぱり違うような
※今日の独り言集、縦読みは無いよ。何とかまとまったのか?
もう俺の限界なのでこれで長文は止めるね。
い
じ
む
ら
まで読んだ
あ、うっかり期待させてしまって申し訳ないが無いよ。
...どうしよう、最後に添削してもらってから
礼を述べようと思ってたんだが...
最近の若者は細かいこと気にするんだな
ハイテンションで真理探究してやんよ!と張り切ったはいいが
見当違いな事言ってばっかりだったもんで。リアルタイムでもマズいなあと
思っていましたが、後から読んでも冷や汗もんですね。
大変フォロー有難かったです。
規制されてたから何も言えなかったが、発想の飛躍が激しいので、
もうちょっと落ち着いた方が良いと思う。
元々の話は、パターンマッチがプリミティブで存在すれば、
ifもそれで表現できる、ってことだよね? んで、実例が
>>677という。
>>682で結論が出てると思うんだけど、
>>704みたいな結論になるのが謎。
たぶん if はパターンマッチのシンタックスシュガーであるという話から
-> if をパターンマッチで定義可能か
-> if もパターンマッチもチューリング完全な言語には必須でないから本質でないんだよ
-> ラムダ計算万歳!
-> いや,むしろラムダ計算の書き換え(リダクション)はパターンマッチングそのものでないか!
-> if は先行評価という言語の実装の都合上に生じた特殊形式でありラムダ計算に不要である!
てな感じで言語の表現能力の話から計算能力(チューリング完全であるか)の話にシフトしてるんじゃないかな
表現能力と計算能力を同列に語ればそりゃ飛躍もすると思います
>>710 >>682で結論が出てる
それは違う。
パターンマッチ渡しに合わせて、
ブロック式を評価せずに引数として渡す方法が必要。
副作用があるのが悪い
何年にもわたってループしている話題ですが
「基本5関数だけ」で計算完備の方法を教えて
マカシ本では基本5関数+label+cond+lambdaっぽいです
でもlambdaさえありゃそんだけで計算完備だし…
cametan_001様のいうこと聞いてりゃ間違いない(笑)
「基本五関数だけで計算完備」って誰が言ったのさ。
どこにもソースが無いじゃないか。
720 :
デフォルトの名無しさん:2010/07/19(月) 11:41:33
schemeで繰り返しを再帰やfor-each以外の構文で書く方法、誰か知らないか?
再帰だとメモリ食うし、for-eachだといちいちリスト用意してやんないとできない。
Schemeで再帰がメモリ食いとか、
それはひょっとしてギャグで言っているのか?
末尾再帰ならメモリ食わんだろ。
そういう話じゃない?
>>720 末尾呼び出しは勝手に最適化されてメモリは消費しないはずだが
>714
同じくチューリング完全なbrainfuckと比較して考えると、
brainfuckは要するに、ポインタ移動とポインタ上の値変化を
ひたすらやればメモリ状態を如何様にも変化させる事ができる
って事だから
ここで、チャーチ数のリストをメモリと見なすと、
って考えたら、チャーチ数でラムダが。ここを変則的な数の定義
にすればいい?ううむ。
725 :
デフォルトの名無しさん:2010/07/19(月) 12:49:32
>>721-723 レスサンクス。
最適化されるかどうかは処理系に依存しないか?
今使ってる処理系がちょっと特殊(というかブラックボックスに近くて仕様がはっきりわからない)なんだ。
再帰使って繰り返し文書くと、オーバーフローエラーで落ちてしまう。
言語としてのSchemeは末尾再帰の最適化をするように定義していたと思うが
727 :
デフォルトの名無しさん:2010/07/19(月) 13:00:10
>>726 さんきゅ。
それがわかっただけでも十分だ。
どうにかしてみる。
729 :
デフォルトの名無しさん:2010/07/19(月) 13:44:53
>>728 処理系は会社のものなんでスマンが出せない。
コード自体は末尾再帰になっている。
例えば、
(define abc
(lambda ()
print("hoge")
abc()))
みたいに書いてる。
do構文か、、、URLさんきゅ。
試してみる。
scheme(lisp)をreadableなCに変換する方法は
toyレベルならあるそうだけど
どこに載ってるのか探してもでてこない
誰か載ってる場所を教えてくれまいか
りーだぶる〜の前提かいてくれよ。
なんなる読みやすいインデント程度なら整形機通せばよいだけだしね。
メジャーどころで言えば rhizome/pi とかがあるけど…
readable っていうのをどういう意味で言ってるかによる。
Scheme の挙動を再現しようとすれば C 的には不自然なところは当然有るよ。
まぁ、 Scheme でなくても機械的な変換をしたものが見辛いのは普通だからなぁ。
C言語書けない人でも読めるって意味だろ
もし書けるなら、toyレベルなら手で書けばいいだろ
C言語かけないのに読めるわけねーだろこのカス。
てめーの頭がToyレベルなのが良くわかるわw
もっとなじってくれ
lispわからない人けどCはわかる人と共同で作業するために
lispを読める形で変換したい
継続とかは変換しなくていい.lisp固有の処理は変換しなくていい.
自分でつくろうとすると型推定がめんどくさい.
Lispではいたコードを読むのが簡単なCで出力したとして、
Cで拡張したあともとのLispコードを変更したいばあいはどうすんの?
わざわざコピペとかするわけ?
効率悪いよ、バグも出やすいし。
gitのマージ機能でも使えばいいんじゃないかな
もとのLISPコードしだいでかなり出力結果がわかるだろ。
統合作業なめてんのか。
一緒に作業するやつ気の毒だわ
生成されたコード上に現れる一時変数は一意の番号などをつけてCレベルで
ぶつからないようにすることが多いけど、Lisp側を変えて再生成すると
番号がずれる。字面だけ見るマージ機能は多分使えないよ。
Lispわからない人がわからないままでLispでの作業に参加するという時点で普通より効率は良くないだろう
Lispわからない人がLispの作業に参加するわけないだろ
Cの作業に勝手にLispを持ち込んでるに決まってるじゃん
>>743が前提ならば、インターフェースを決めてもらって、
中身はLispの自動生成でいけるかもしれんな。
インターフェース内でLisp生成コードを起動させる部分は手書きになるだろうけどな。
やりたいことがわからないけど、
素直に標準入出力をパイプでつなぐとか、
生テキストでやり取りするとかした方がいいんじゃない?
おとなしくCかLispのどっちかに統一するのが一番だと思うけど
自動生成されたコードで読みやすい、って無理があるような
おれなら CiSE (C in S Expression) みたいな、Lisp で C を生成する方にするかな
>>746 Gaucheの中にあるのね
ソースのぞいてみる
CiSEってcl-whoをC言語に置き換えただけなのと
何が違うの?
どちらも使い道がない
どっちも説明がおかしいので本気にしてはいけない
どうおかしいの?
純LISPは純粋関数型言語ってことでいいのかな
いいわけがない
単純さはどっちが上なの?
>使い道がない
>本気にしてはいけない
>いいわけがない
否定ばかりで教えてくれない!ケチー!
甘えを捨てろ
>>749 少なくとも「純LISP」の方はlambdaもなければ関数定義もif/condの類も
ないので全く理解してない奴が書いてるな。
「最小のLISP」の方はいちおう必要なものは揃っている。説明はしょり
過ぎな気はするけど。
5関数ではチューリング完全にはならないって事?
チューリング完全である事と、「素直に」拡張してLISPを構成できることは別な気もする
>>760 CL界隈では有名人のEdi Weitzが作った、S式からHTMLを出力してくれる、
テンプレートエンジンのCL-WHOってのがある。
CiSEは単にそれのC版なの? って聞いてるんだと思う。
まあ、大体似た様なもんだけど、CiSEはマクロとか定義できる。
CiSEをboostで変なことやってる奴らに使ってもらいたい
>>759 チューリング完全でないものを「素直に拡張して」
LISPになるわけないだろ。
>>764 チューリング完全でないものの話がどこから出てきたんだ
素直な拡張でLISPになる ⊆ チューリング完全
で、これがイコールではないんじゃないかって話じゃないの
Schemeで並列処理は出来ませんか?
ある条件を満たせば複数の関数を同時に実行するような感じで
>>767 occamみたいなものなら無いけどthreadサポートのある処理系で自力実装ならいくらでもなんとでもなる気がする
リストをたどって依存していない計算をがせないかな?
探せたとしても細かくなりすぎて並列動作はさせにくいかな・・・。
もともとツリーになってるから依存を見つけやすいし。
Ypsilon あたりはマルチコアの性能を目一杯使うための拡張を入れてるみたいだね。
>>762 なるほど、解説ありがとん
でもそういう意味だとして、他の言語を生成するのを
じゅっぱひとからげにするのは乱暴な気がするなぁ。
HTML生成なら簡単だけど、Cを生成するのは構文も多いし大変だと思う。
>>765 それはdyncompで、cise を使ってるけど別のものだよ
CiSE はアンドキュメンテッド。両方とも勉強して使ってみたいけど
時間がないんだよなー。
道可道,非常道
どう転んでも
洗脳で話題の苫米地氏も早い段階で東洋思想に目覚めた。
この夏,高野山で授戒してもらってきます。
これで名実ともに仏教徒になれて嬉しいです。
た、高野山・・・
高見山がどうしたって?
高見盛じゃね?
CiSEのドキュメントをかってに作ったら怒られるかな?
オフィシャルなものでないことは明記するべきだけど、
作って公開する分にはいいと思う。
よくできたものであれば公式に取り込まれることもありうる。
は?
>>781 生成マシンって何? CiSEみたいな物の事を言ってんの?
それならCLでは聞いたことが無い。移植するのが一番早いんじゃないか。
というか、ECLとかがあるのに本当に必要? FFIもあるのに。
手段が目的になってない?
ああ、聞いたことが無い、ってのは、リリースされてるソフトウェアとして。
インハウスでの話なら幾らでもあるだろうし、CLiki辺りにも載ってた気がする。
CLでS式C言語っていうとscはジェネレーターだったかトランスレーターだったか。
787 :
デフォルトの名無しさん:2010/07/27(火) 13:48:12
新手のスパムだな。
こいつらも、ハッカーと画家ぐらいは読めよな
プロフィールに一人ずつ好きなLisp方言を添えるべき。
名前空間が汚染されてしまいました
名前空間とは何?
環境と言いたいんでしょ
>>786 手に持ってるのは超小型Lispマシンか
>>786 それに映ってるLISPのロゴ入ったノートPCはほしいな
徐々に精神汚染が進んでいる。
第五世代のときも多分こんな感じに進んでいったんだろうね。
そして、祭りが終わってしまうと、いったい何をやっていたのか
ほとんど意味不明になってしまった。
第五は団塊世代主導の失敗例の一つだよな。
>>786 メンバー名はcarとcdrとconsくらいしとけばいいのに。
これから俺のメールアドレスを人に紹介するたび、声優オタと思われるわけだな。
狙ってやってるとしか思えないが、
本家LISPはディスる気まんまんなのは判った。
メンバーの名前の処理系作れば向こう側の検索結果にも混乱を与えてやれるな
舌足らずの意味の方なんだろうけど大迷惑だな
___________________________
| |
| ,ェエエ0エエェ、 ,. -―‐- 、 ,,-―‐- 、 |
| 〃...................ぃ .〃..:..:..:..:..:..:.':, (※)==ニニニ=':, |
| i...j((((((((((t.....i ((メj!;!;!孑ハ.:..:', i::::::ルjljljljljljIt:i |
| |.i!|''''|' '|''''|i!.| |.} ┃ ┃|..l).:.l |::::::!|┃ , ┃'{:| |
| |i圦'''_ヮ_'''.イ.i!| |!!、'''_ー_''ィ!!}./ `>.しルム''_ー_'''ノJ .|
| ___{ミ}ミ}_,.,.,.,.,.,.{ミ{ミ} .{ミ}:.l,.,.,.,.,{/ /) /.....}ll{__}ll{..':,___ |
| |_LISP_|ェュ.......| | ん_(:.|.../ , イ |´./xx/...rェ|_LISP_| │
| ゞ゙,二二,}=ゞ^二二ノ ゝ二二^ツ f、_ノ 〈......l*{二^ツ.i..i|{二''ツ. │
| f~i~i~i~i~iハ |ーf0t―‐| ゞ、l*j...i..i..i..i..i|j .|
| |..i..i..i..i..i..i| ノ....{{...{{.......', |XXXXXX| |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___________________________
| |
| ,ェエエ0エエェ、 ,. -―‐- 、 ,,-―‐- 、 |
| 〃...................ぃ .〃..:..:..:..:..:..:.':, (※)==ニニニ=':, |
| i...j((((((((((t.....i ((メj!;!;!孑ハ.:..:', i::::::ルjljljljljljIt:i |
| |.i!|''''|' '|''''|i!.| |.} ┃ ┃|..l).:.l |::::::!|┃ , ┃'{:| |
| |i圦'''_ヮ_'''.イ.i!| |!!、'''_ー_''ィ!!}./ `>.しルム''_ー_'''ノJ .|
| ___{ミ}ミ}_,.,.,.,.,.,.{ミ{ミ} .{ミ}:.l,.,.,.,.,{/ /) /.....}ll{__}ll{..':,___ |
| |_LISP_|ェュ.......| | ん_(:.|.../ , イ |´./xx/...rェ|_LISP_| │
| ゞ゙,二二,}=ゞ^二二ノ ゝ二二^ツ f、_ノ 〈......l*{二^ツ.i..i|{二''ツ. │
| f~i~i~i~i~iハ |ーf0t―‐| ゞ、l*j...i..i..i..i..i|j .|
| |..i..i..i..i..i..i| ノ....{{...{{.......', |XXXXXX| |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄))))))))))
810 :
デフォルトの名無しさん:2010/07/28(水) 06:45:10
>>804 >>無料ファンクラブ「ふぁみりすぷ」
>>デビュー記念イベント「DIVE II LISP SUMMIT - はじまりすぷ -」
すげーぜ
企画サイドにほぼ間違いなくlisperがいる!
あすみんとサスマンって似てるからまあ仕方ないよね
頼むから2chで情報工作活動だけはやめてくれよ
てか、ユニットLISPと言語LISPの呼び分けについて議論したいところだがw
>水樹奈々(30)平野綾(22)ら声優界の大物歌手に、「LISP」が挑戦する。
うげぇ、人工知能ここまで来たか
蓮根プロジェクトは一体どうなったんだ
「asmis」って書くと処理系っぽいですよねー
asmって書くとC言語の一部みたいだねぇ。
>>813 え?呼び分けなんて必要ないよ
どちらも一つの同じものなんだから
記事見てこのスレ見にきて安心しました。
LISPって商標登録されてないの?
商標はジャンルごとに別れてる。
>>806 Lispは何でもありの総称の世界。そのものが宇宙的なんだからユニット名でも構わないさ
仮にユニット名がRubyだったら、いまごろ信者が暴動起こしてるかも知れないがw
スピノザの一元論ですね。
Pythonだったら、バカ歩きや死んだオウムのコントをやらされていたかもしれないな。
ニッ!
文法まちがったら壁に百回書かされるんだよ
LISP 原紗友里 阿澄佳奈 片岡あづさ
一人も知らん
で、ダレがcarなの?
無難にあすみん
>>826 Made with secret alien technologyだし
パロディサイト作ってくださいと言ってるようなもの
リリカルリスプなんてのもあったな
こんな人口の少ないマイナー言語対象にするはずねーだろ。
正論だな。
LISPは、自分で書くのはいいけど、他人のソースは読みたくない。
なんか読みづらいんだよね…
ELIS復活祭、プレス発表していないんじゃない?
能美市の今月の広報にもなんにも載ってないぞ。
能美市じゃなくて美濃市だろ
gauche に rfc.zlib っていうライブラリがあるのはわかったのですが、
使い方がぜんぜんわかりません。
zip ファイルを展開する典型的なサンプルみたいなのはありませんか?
Elisみたいなゴミを自画自賛するイベントよくやろうなんて思うよな
昔でもみんなSunのワークステーションばかり使って、Elisなんて見向きもされなかったのに
一体誰が喜ぶんだよ
参加費をやたらととるのは勘弁して欲しい。
ところどころ5千円とか1万円とか出てくる。
これ金1万も取るん?
>>836 zlibはzipフォーマットを扱う機能は無い。
LISPってC並に速いとどっかで見たんですが、この認識で合ってるでしょうか?
バリアント型でも速い、ってのが想像つかないんですが。
そんな上手い話あるわけないだろ
条件を満たせばそういうコードも書けるってこと
CでもLISP並みに遅いのは簡単に書けるぞ。
ですよねー
普通のコードは型判定入るから
ネイティブに動かしても大体3倍ぐらいは遅い
>>841 C並に速くするときは最適化と型宣言で型判定を入れないようにする。
あと、メモリアロケーションも避ける。
結局、あんまりLispっぽくないコードになる。マクロが使えるのが救いだけど。
とりあえず必要な機能をざっと書いてからチューニングしていく Lisp と、
必要な機能を書くのがめんどくさいけど速い C っていう方向性の違い。
ほとんどのケースではそこそこの速度が出れば充分だし、
実際にはチューニングが必要な箇所ってそんなに多くないってことを考えると
全体としては Lisp の方が楽ではあるという結論に。
エンジニアリングはトレードオフ。 速けりゃいいってもんでもない。
でもwindowsではダメダメなLISP
あんまりWindowsで使いたがる人が居ないからねえ。仕方ない。
一応、PLTとかCorman LispとかClozure CLとか、それなりにやってる所はあるけど。
速さが必要なら最初からCなんかでやった方がいい
正直、なんとか+Cっていう組み合わせが最強
なんとかの部分は自分の好きな言語で。
ならば FFI が発展している Lisp 系が有利じゃね?
CiSEってCは生成できるけどヘッダーは生成するのまだないの?
>>854 cprotoとか、外部ツールじゃダメ?
>>855 ありがとうございます
それを使ってみます
今も gauche を実用に使ってる人っている?
gauche.cgen
の足りない機能が
bigloo/comptime/Cgen/cgen.scm
cgen-function
の中で(emit-cop cop)呼んでるあたりからパクってこれそうな件
biglooのコードをgaucheにくっつけるか
gaucheのコードをbiglooにくっつけるか
どっちがいいものか
gaucheで、デバックプリントでclassを表示されたいのだけど
(display class_ins)
だとアドレスみたいなの表示されるだけ。メンバー一覧が表示されるような便利関数ないものでしょうか
自己解決
(d class_ins)
Gauche.cgen.cise
の
define-cise-stmt
をいろいろ書いても将来のバージョンで互換性なくなって
使えなくなることなんてあるのでしょうか
ありえます。
まだ公式なドキュメントが書かれていないという時点で、
本来はユーザーが使うべきものでないことを意味します。
そういえばElisなんとかってどうなったんだ?
人が集まらなくて始まる前に終了の予感w
こういう糞プロジェクトやった連中が
責任取らないでのうのうといつまでも偉そうにしているから
日本は駄目なんだよ
モイスチャー星人が異文化交流に来てくれたらしいが
迷惑な話だな
>>868 と自宅警備員が怒っておられます、子ども手当をコジキ手当にして下さい>総理
興味のある言語にTaoと書いておいたら面接で爆笑された
Railsエンジニアを募集してる会社の採用面接を受けた時の話。
転職エージェントに作れと言われて作ったシートに、「興味のある技術/言語」という欄があったんです。
仮想化技術とか色々書いたけど、プログラミング言語の中で興味があるのはTaoだったので、
Taoと書いておいたのですが、それを見た面接官のリアクションが酷かった。
面接官「Tao・・・ふははっ!Tao!」
面接官「Taoやってるんですか?wwwww」
俺「(唖然)は、はい・・まだS式を理解したぐらいですが。。」
面接官「Tao・・・ニヤニヤ」
その人はエンジニアで、当然Rubyのコードを書いている人だったので、
Rubyが「Matz Lisp」と呼ばれている事を知らないワケが無いだろうと思っていた。
つまり、このリアクションは"理不尽な状況に直面した時にどう対応するか"を見ているんだろうと判断し、あえて突っ込みは入れずに対処した。
しかし最後の質問で「何故RoRを採用したんですか?」と聞くと、
気まずそうに理由を話し、最後に「・・・と、聞いてます」と答えた。
つまりこの人は上からRubyを採用すると言われたから使っているのであって、
特別Rubyに思い入れとか無いリーマンエンジニアなんだなあと分かった。
mix-inとかもLisp発のテクニックだし、RubyやってるならTaoに興味を持つのは普通だと思うんだけどなあ。
多分ガチで知らなかったんだろう。
tao知ってるとか凄い面接官だな
関係者じゃないのに行ってしまった。
電電公社同窓会って言ってやるべきだよ。
関数が定義されていないということが考えられます。
>>874 Emacsスレ行って、debug-on-errorの使い方を教えて貰えば?
なんでemacs?
>>878 ぎゃああああああ。*.20090118.zip で試すとうごきましたぁぁ。
お時間を割いて試していただいて恐縮しております。本当にありがとうございました。
scheme48って海外で人気らしいけど、なんで?
48時間しか掛からないから
SCM48
だれかScheme108作れよ
Scheme893ゲット
scheme072
自己満足のために作りました
結局アイドルグループlispってなんだったの?
LISP81でした。
>LISPとかわめいてるけど 悟り開いてるだけのばか
>
>いつまで立っても勉強 脳味噌発展途上
悟り開いてるだけって何?
悟りって何ですか?
小五ロリ
emacsスレか
みんなschemeはどの処理系使ってるんですか?
>>894 PLT使ってたけど、最近Schemeの処理系と言えなくなった。それ以外はGaucheだけ。
てーか、R6RS系列どうしたよ。Ypsilon、Ikarus、Larcenyと絶賛死亡中なんだけど。
PLTは別の次元行っちゃったし、生きてるのMoshだけじゃない?
賢い奴はR6RSはスルーできるはずだし、
他人のお仕着せの処理系なんか普通使わない。
結局R6RSで幸せになった奴っているのか?
自分で処理系作ろうとは思わないから
scheme48あたりを改造するのが無難ってことか
SchemeもCLも処理系依存がひどすぎるからあんまり使う気にならないんだよな・・・
言語のシンプルさは好きだけどね。
はてなダイアリのScheme関連の話題は追ってるけど、r6rsの話題なんかほとんど無いじゃん。
観測範囲が狭いだけかもしれんが、はてなは一応そういう技術系の話題が多いはずだろ。
r6rsにユーザーなんていないんだよ。
所詮はてなだからな
>>901 そもそもScheme人口が少ないってことを忘れてないか。
そりゃ目にする機会は少ないだろうよ。
Scheme世界の中ではR6RSの重みはそんなに軽いものじゃない。
次(R7RS)にも大きく影響を残すのは間違いないと思うぞ。
反面教師としてかもしれんがな。
>>903 C言語
処理系依存は少ないがOS依存は多い
Cの場合は未定義なところが多い。
シフト演算子の挙動さえはっきりしてないなんてどうよ。
未定義の部分を使わないようにするのはユーザーの側の責任と言えなくもないけど、
そもそも未定義な部分を利用しないと書けない (書き難い) こともあるのでそれは処理系依存が多いと言っていいと思う。
まぁ、
>>905は釣りだろうけど。
>>906 しかし同じ用途のコンパイラでほとんどのメジャーな選択肢はほぼ同じ挙動をするよ。
でもCLはAPI自体からして全然違うよね。
互換性を持たせようという努力が見られない。
実装が一つしかない系のネタかなとおもったけど、Cか
r6rsネタをよく取り上げるブログ (日本語) とかがあれば紹介してくれないか。
nihongo!!!!
>>907 C でのそれは見様によってはデメリットだよ。 「ほぼ」ってところが特に。
初心者が既存のコードを見て規格にある挙動なのか処理系依存なのかわからないまま覚えたりしがち。
違うなら違う API として提供してくれれば関数なりマクロなりにくるんでなんとか出来るのが CL だろ。
例えばVCとgccてだいぶ違うよね
makefileの書き方からして互換性がない
でもプリプロセッサとかで共通に動くソースは書ける
そうかぁ? 細かいところでは結構場合分けして ifdef するだろ。
それを共通に動くと言えるものなら CL でも同じことだと思うけど。
互換性つっても最終的にABIに合わせるだけだろ
マイナー言語じゃどれも似たような状況だよ
口出しする人間が少ないから進歩も遅い
>>895 plt使うのやめたのはなぜ?
まさか有料化?
PLT は最近 Racket に改名して方向性が変わった感じなことを言っているのでは。
今までは言語と開発環境と実行環境の区別があってわかり難かったのを全て含めて Racket という形にした模様。
言語の部分は Scheme をベースにしてはいるけれども開発環境まで含めた「実用的な」言語としてアピールしようとしているらしい。
一応 R5RS も R6RS もサポートするっぽく書いてはあるけど、新規ユーザー獲得に向けてアピールするには Scheme という名前はネガティブに受け取られると考えているようだ。
emacs 一辺倒の古いスタイルでは新規層を取り込み難いのは事実だろう。
とは言え、統合開発環境というには若干力不足な感もあるなぁ。
言語自体はそれほど変わるわけじゃないので、
>>895 が PLT やめたっていうのは心理的な要因が大きいと推測。
drschemeの画面のはじっこにメモリーいくらまでしか使えないとか表示されてたから
てっきり有料化制限かと思った
DrSchemeは昔UIが常識と掛け離れてて入れた瞬間消したっきりだ
Scheme/Lisp界隈はどうして"普通"のことをやろうとしないんだろうな。
みんながみんな俺仕様を普及させようとがんばってるように見える。
あとCD-R関連の連中はアドウェア仕込むのが好きだし、
3D関連のやつらは俺仕様のボタンとか多用しまくるし、
何でそんな勝手なことばかりするんだろうな。
自由だから人の使い勝手は考えなくても良いと考える人が多くて嘆かわしい。
>>895だけど使うのやめてないやめてない。最近CLばっか使ってるってだけ。
PLTはRacketっていう新しいLisp/Schemeの方言作って、それをメインにしたから、
RnRSをサポートするといっても、もうSchemeの処理系とは言い難い、って意味。
もちろん有料化もしてない。
ちなみに、PLTっていうと、どうもみんなDrSchemeのことを連想するみたいだけど、
EmacsからMzScheme使うと、とっても便利だよ。ライブラリも豊富だし。
Scheme (R6RS) ではライブラリが名前空間として機能する感じですが、それとは別にそれっぽいものを作ってみようと考えました。 具体的には
(make-namespace ns1
(define a 1) (define b 2))
(make-namespace ns2
(define a 3) (define b 4))
って感じで定義すると
(ns1 a) ⇒ 1
(ns1 b) ⇒ 2
(ns2 a) ⇒ 3
(ns2 b) ⇒ 4
となるようなマクロです。 更に言えばマクロ展開の段階で参照が解決されることも期待しています。
私が書いたのはこんなものです。
(define-syntax make-namespace
(lambda(x)
(syntax-case x ()
((k name body0 body1 ...)
(with-syntax ((%define (datum->syntax #'k 'define)))
#'(begin
(let-syntax
((%define (lambda(y) (syntax-case y () ((_ var val) #`(begin
(define #,(datum->syntax #'k
(syntax->datum #'var))
val)))))))
body0 body1 ...)
(define-syntax name (lambda(y) (syntax-case y () ((_ var)
(identifier? #'var)
(datum->syntax #'k
(syntax->datum #'var))))))))))))
アクセス不能な変数を作り、それに対するインターフェイスとなるマクロを定義する感じです。
しかし、 (ns1 a) という風にすると単なる a に展開されるらしく、そんな変数無いとエラーになりました。
一体どこが間違えているのでしょう?
誰も間違い探しなんてしたくねえんだから
どういう出力結果を期待してるのかを書きなよ
ウォーリーでも探してろよ
ウーフの国はトラウマ
R5RSにハッシュテーブルがないのは失敗だった
Cでハッシュテーブル自作するのはまだ我慢できるが
Schemeでそんなもの書かされたらたまったもんじゃない
苦し紛れに変数のルックアップでそれっぽいものを作る人が続出
ハッシュテーブルとか、Common Lispじゃないんだから。
まだ最小主義を実践してたR5RSに何を期待してるんだ。
930 :
デフォルトの名無しさん:2010/08/26(木) 11:50:24
ライブラリの必要条件にハッシュテーブルはあってほしところ。
Schemeにはrubyのgemやperlのcpanのようなライブラリアーカイブと
簡単にインストールできるコマンドのセットは無いんですか?
>>931 いくつか提案はあるが、どれもたいした規模になってない。
933 :
デフォルトの名無しさん:2010/08/26(木) 13:57:44
質問があります。
ソースファイルにa.cppとaaa.cppの二つが入っているとします。
ヘッダーファイルにb.hとbbb.hの二つが入っているとします。
a.cppには
#include "b.h"
c_data sa; //c_dataはb.hに入っているクラス
string line;
sa.reader(line);がプログラムに打ち込まれているとします。
b.hには
struct c_data{
void reader(省略);
}
が打ち込まれているとします。
aaa.cppには
#include "b.h"
#include "bbb.h"
void c_data::reader(省略){
boost::tokenizer< abcde > tok( 省略 );
が打ち込まれているとします。
bbb.hには
class abcde{
}
のプログラムが打ち込まれているとします。
どのファイルにも実際はもっとプログラムが書かれていますが大事な部分だけ載せました。
この場合ってどれも連携して実行できますか?
初心者なんで間違っているかもしれませんが、a.cppのsa.reader(line);の所で
しっかりとaaa.cppのvoid reader(省略);が読み込まれますか?
>>931 gauche独自のもの
plt独自のもの
なんかはあるよね
>>923 作ってみた。
ただし古い人間なんでdefine-macro。
define-syntaxでどう作るのか教えて欲しいね。
(define-macro (make-namespace ns . body)
`(define-macro (,ns sym)
(case sym
,@(let loop ((x body) (r '()))
(if (pair? x)
(if (tagged-list? (car x) 'define)
(loop (cdr x) (cons `((,(cadar x)) ',(caddar x)) r))
(loop (cdr x) r))
(reverse r)))
(else ''unknown-symbol))))
展開するとこうなる
(macroexpand1 '(make-namespace ns1 (define a 1) (define b 2)))
=>(define-macro (ns1 sym) (case sym ((a) '1) ((b) '2) (else ''unknown-symbol)))
動作テスト
(make-namespace ns1 (define a 1) (define b 2))
(make-namespace ns2 (define c 3) (define d 4))
(ns1 a) =>1
(ns1 b) =>2
(ns2 c) =>3
(ns2 d) =>4
gaucheが1.0になるのはいつごろなのだろうか
>>931 強いて挙げるならPLaneT。
ttp://planet.racket-lang.org/ そもそも、処理系間での互換性に難があるから、共通のライブラリが作れない。
そのため、人的資源が分散し、大規模なライブラリアーカイブも作れない。
事態を打開するため、新しい言語規格ではライブラリを作るための共通の基盤作りを目指したけど、
一部がやや強引に押し通したため、多くの処理系作者がスルーした。
>>937 C言語でライブラリを作りたいんだけど
そういう意見は、みんなで強引に黙殺してるでしょ
一部ではなくて、みんな強引だよ
slib
元々ライブラリというものは処理系依存度が高いから、
どうしても使いたいライブラリがあれば、目的の処理系で
可能な方法でポーティングするでしょ。
処理系間の互換性なんて気にしても大して意味がない。
perlやrubyは元々1つの処理系があって、
音頭を取る人間もその処理系関係者、
仕様にしても、既に存在する処理系からまとめる
だけだから言語仕様というより1処理系の動作仕様になる。
つまり互換性云々とは無縁の世界にいる。
もしライブラリを作るならschemeという言語に対してではなく、
scheme処理系に対して行うべき。
言語提案者が処理系お抱えか否かだな
処理系を抱えると、それなりのリスクを抱えることになりますね
技術が進歩すればすぐ時代遅れになったり、色々なバグもありえます
それに対し、仕様はある意味反証不可能な存在ですよね
反証の意味分かっていってるのか?
仕様だけしかなくても、時代遅れになることもあるしバグは存在しうるでしょう
実装はある意味究極の仕様だからな
cl は他言語とは違って仕様がありますから(キリッ
って、黒なんとかいう人が書いてたな
>>944 仮に仕様が時代遅れのように見えても、実装を工夫すればうまくいく可能性があります
すべての実装を試さない限り「仕様が時代遅れである」と断定することは不可能です
>>945 「究極」なら、補助仮説をそれ以上追加することもないですよね
じゃあこの世界の中で断定できる事なんてひとつもないよ
>>947 8進表記の実装を全て試す必要がありそうですね。
恋みたいなもんさ、遊びでつきあうなら見た目が良い言語を選べばいい。
でも、人生を賭けるなら、大学院くらい余裕で出てるような、
知性とインテリジェンスのある相手がいい。
分厚い仕様書はインテリのあかしなんだ。
今日も暑いからな。
www
(この 温度 を 解決 する プログラム を 作れう)
>>951 >恋みたいなもんさ、遊びでつきあうなら見た目が良い言語を選べばいい。
じゃ brainf*ck を。
>でも、人生を賭けるなら、
>知性とインテリジェンスのある相手がいい。
じゃ grass にしようか。
>>954 そこらの部屋に入って8光ちょっと先の融合炉のスイッチを off にすればええんちゃうのw
Windows環境でLispとSchemeを学びたく、
Gaucheを試してみたものの、MeadowやEmacsなど
よく分からないのですが、どの処理系がいいのでしょうか?
>>957 そういう聞き方する人て多いけど、有る以上はそれぞれの特徴があってそれぞれに「いい」ところはある。
そんなに多くないんだからテンプレにある分くらいは試してみて自分に合ったのを探せばいいんでないの。
Lisp 系言語をまともに使うならエディタのサポートは絶対に要る。
それが実質的には Emacs 系か Vi 系しか選択肢がないのが実情。
言語自体がどうこうよりも大きな障壁になっているという説もあるくらい。
(でも、エディタのサポートなしじゃもっとつらい。)
概ね Emacs 派が多いんじゃないかな。
学習用程度なら Racket がエディタを含んでるし、 ChezEdit-NT みたいなのもある。
960 :
874:2010/08/29(日) 00:23:46
>>957 私は scheme (gauche) を xyzzy の scheme モードでただいま邁進中です。
>>874 >>878 を参照してください。
>>957 Lispは仕様は良くても処理系がすべてクソなので机上だけで遊ぶ言語だと思ったほうが良いです。
>>957 まずは使ってみるのが良いと思うよ。GaucheBoxもDrSchemeも、LispBoxってのも結構良い。
入門時はついつい近道を探すけど、まず飛び込んでみないと分からないことも多いんだ。
合言葉は DIVE II LISP !!
scheme -> Cのコンパイラを作ってみようかと思うのですが
コンパイラの勉強するのにお勧めの本はどんなものがありますでしょうか
SICP がある。定番すぎるのが嫌なら Scheme やめろ。マイナー言語はいくらでもある。
SICPはもう読みました(最後のレジスタマシン以外は)
普通の手続き型のコンパイラなら適当な本読めばいいけど、
schemeは末尾再帰や継続があるからちょっと工夫がいる。
基本的に末尾コンテキストを区別したりするわけだが、
そういったことを扱ってる書籍は見たことない。
971 :
デフォルトの名無しさん:2010/08/30(月) 15:04:45
>>969 レジスタマシンが一番おもしろいのに・・・
Gaucheの人って開発飽きてしまったのだろうか
ある程度感性しちゃうと、
やることがなくなるんじゃないかな。
そんなことはなかろう。
R6RS 風マクロ (syntax-case とか) っていうデッカいのが残ってるぜ。
フェイズとの絡みをどうするか決めかねてるみたい。
あと、 Windows でのスレッド対応なんかも。
pthread 対応パッチは有るけど、直接 Windows API を使う方向で考えているとのこと。
誰か
>>935のsyntax-case版書いてくれんかのう
980 :
923:2010/09/01(水) 17:49:42
初心者ですが俺も挑戦してみた。
define-syntaxしかわからないので
>>979-980氏のコードは理解出来ません\(^o^)/
(define (f x) x)みたいなのには対応してません\(^o^)/
namespaceに後から追加は出来ません\(^o^)/
(define-syntax ds
(syntax-rules ()
((_ x y ...)
(define-syntax x
(syntax-rules ()
y ...)))))
;↑define-syntaxを覚えて最初に書いたコード、おきに
(ds make-namespace
((_ ns defs)
(ds ns ((_ x)
(let ((result (assq 'x (map (lambda (u) (cons (cadr u) (caddr u))) defs))))
(if result (cdr result) (string-append (symbol->string 'x) ": undefined variable"))))))
((_ ns def ...)
(make-namespace ns '(def ...)))
)
(make-namespace ns1 (define a 1) (define b 2))
(make-namespace ns2 (define a 3) (define b 4))
(ns1 a)(ns1 b)(ns2 a)(ns2 b)(ns1 sonzaisinai_hensuu)
982 :
923:2010/09/01(水) 19:34:05
思いがけず盛り上がってうれしいよ。
>>981 の場合は (ns1 a) は↓な感じに展開される。
(let ([result (assq 'a (map (lambda (u) (cons (cadr u) (caddr u)))
'((define a 1)
(define b 2))))])
(if result (cdr result) (string-append (symbol->string 'a) ": undefined variable")))
ランタイムにこれが走るわけ。
syntax-rules ではこれくらいしか書きようがないんだけど実行効率は悪いな。
>>935 ではマクロ展開フェイズで 1 になるのでランタイムではただの1。
>>923 では定義時に (define a 1) が (define g1 1) みたいな感じに置き換えられて、 (ns a) が g1 に展開される感じを考えてた。 便宜上 g1 とか書いちゃったけど、実際には衝突回避のリネームで作られる変数で、直接表すことのできない変数ね。
>>976 何でそう思ったのか分からないけど、リポジトリへの更新はずっと続いてるよ。
あの人が仕事で使ってるのがAllegro CLとGaucheだったと思うから、
転職でもしない限りは更新続けてくでしょ。
>>976 おれライトなshiroさんストーカーだけど、多分忙しいだけだと思うよ
>>983 頻度も内容も小粒になってはいると思うよ。
理由は忙しいだけだとは俺も思うけど。
仕事で使うなら飽きたから止めるってわけにはいかんよなぁ。
充分だから止めるってことはあるかもしれんけど。
986 :
981:2010/09/01(水) 22:57:36
>>982 コード久しぶりに書きましたが、schemeは楽しいですね
最初は名前衝突を避ける案として
make-namespace時にsymtableを作ってクロージャに閉じ込めようと考えたのですが
関数名とマクロ名が衝突するので諦めました\(^o^)/
自分もsyntax-case使えるようになりたいですが
難しそうなので手が出ません
前schemeがマイブームだったときに
syntax-caseについて調べようとして
scheme実装の対応状況と
解説記事の少なさから挫折しました。
当時、Ypsilonの作者さまが
仕様の不明瞭な点を嘆かれてる記事か動画か何かを
見たような気がします
Ypsilon は trunk でもマクロの挙動に妙なところが残ってる。
petite chez scheme か larceny あたりの方が信頼できると思ってる。
主観だけど。
R6RSでどの程度改善されたか知らないけどR5RSではsyntax-rulesすらアヤしい
プリミティブの構文定義メカニズムじゃなくて
古典的マクロの上のお手軽簡単健全マクロラッパって感じで位置付けとけばよかったのに
んだもんでScheme48以外でマクロを書くときは古典的マクロonly
Gaucheはマクロを定義するマクロがsyntax-rulesで書けないらしいし
健全性に問題ありだけど書けないわけではない。
gauche は実用指向だからな。
gauche でバグが放置されてるのなら、
実用にはマクロを生成するマクロは意外に必要ないってことなのかもね。
結構大掛かりだから syntax-case 導入のときに一緒に修正するつもりみたい。
>>980-981 ありがとうございます
なんとなく読めました
>>981のも定数畳み込みの最適化がちゃんと機能してれば
リテラルになるんじゃないかと思いますよ
(assqやmapの参照透過性をコンパイラが理解してればだけど)
ついでに次スレ立てようとしたら無理でした
すいません
最速はGambit-Cなのかな
sbclと比べるとどうなんだろ
sbclのインタプリタはエラーがでると親の敵のように
エラーメッセージを出すから嫌いだ。
いちいち0を押す必要があるのも面倒。
誰か次スレを
俺はP2だから無理ぽ
ちょいおまちを
ありがたや