いままで日本ではトンコツラーメンは100%安全ですって言ってたのに こうやって一度食中毒事件が発生してしまったので、もうこれ以上日本民族にラーメンを扱うのは無理。 ましてや日本は地震大国で、日本列島には40億年前の活断層が張り巡らされているのだ 食中毒事件を発生するのを想定せずにのんきにラーメン作りしていたラーメン屋の危機意識の無さが敗戦した日本軍にそっくりだ これからはいままでのラーメンに対する安全神話を真摯に反省し、2030年までにラーメンゼロを目標に定めた政府ガバナンスを早急に作成して 足りない分は内向きガラパゴス思考な一国主義に陥らぬよう国際的視野に立脚し、特に東アジアに貢献すべく韓国サムゲタンを食べるべき!!
おつ
4 :
デフォルトの名無しさん :2013/09/01(日) 17:04:49.92
「ステマ」等の絶対にありえない陰謀論を連呼する
頭がおかしい人の相手は誰もしたくない
そのために
>>2 みたいな政治の話題は、ほとんどの掲示板で禁止になっています
>>4 フジテレビの韓流ステマやってる
チョンの地下秘密組織は実在するし
証拠もある
311の人工地震もチョンの地下秘密組織がやったんだけど
>311の人工地震もチョンの地下秘密組織がやったんだけど 流石にこれは駄目だろwwwww XFileが真実とか言っちゃうくらい駄目 もちろんLispのマクロは必須だ(と強引にスレに持ち込む)
そうか。
動的型付け、メタオブジェクトプロトコル、REPL、継続、イントロスペクション、これらはもう、レベルは兎も角、他の言語にも取り込まれてしまっている。最後の最後にLispに残る優位性があるとするならそれはマクロだね、多分。
試しに、したらば に移動したらネトウヨが来なくなるのかには 興味ある
10 :
デフォルトの名無しさん :2013/09/01(日) 19:22:44.30
継続って他の言語に取り込まれてるか?
Rubyちゃん
call-ccそのものは無いけど、クロージャ渡しは普通になってる
>>4 あなたがそういう方だったとは思いませんでした。
ひょっとするとラーメン村住人なのではないですか?
継続とクロージャ渡しは違う気がする
何年か前にLittle Schemer読んで、Seasonedの最初の方で投げ出しちゃった。 翻訳買ってきたけど読めるかな、、
継続に近いのはC++やJavaの例外処理
setjmp()/longjmp() はどうですか?
gotoが継続に一番近いという意見はプログラミング言語の意味論史から見れば本末転倒の答えだぞ。 なにしろ継続(continuation)という概念は表示的意味論(denotational semantics)の産みの親のStracheyが 「goto文に指定されている飛び先ラベルの表示は何なのか?」という問題に対する答えとして発明し導入した概念なのだから。 継続の発明によってgoto文を含む言語に対して表示的意味論を定義し与えることが可能となり、その継続という概念は エラーなどの例外処理に対する意味論を与える上でも使えると判って活用されるようになったのは、Stracheyがgotoのために 継続を発明してから何年も経ってからなのだから。 つまり継続とは何よりも先ずgotoの意味を捉える目的で発明されたということだ。 だから継続に一番近いのがgotoなのではなく、継続の最も基本的な部分は正にgotoの表示的意味のために作られたんだよ。
要するにどれもノイマンマシンの機械語ではGOTOだし、 意味論では継続なんだよ。
ユークリッドの幾何学しか幾何学と呼んではいけないみたいだな
部分リストを見つける関数って srfi とかにないのでしょうか 自分で作るしかない? (find-sub-list (..... 1 2 3 ....) (1 2 3) ) => 123 の場所
>>24 たぶん無い。
汎用的にしようとすると比較関数に何を使うかでバリエーションを作るかオプショナル引数で取るかのいずれかが必要になるので、
仕様をまとめようとすると意外に面倒くさい話になると思う。
util.match は…
Lisperはこの世のゴミ はやくGCされろ
突発的に感情が高ぶる病気 専門家にご相談ください
LISP以外では格好がつかない
matchマクロで circular-list だけマッチさせる事ってできないの?
matchマクロを自分で書こうとしてるのだけど (match v ((x ...) x)) の ... を実装することができない。 どんな仕組みで実装してるのだろう
パターンマッチライブラリって色々あるんじゃねーの? どれの話? っていうか Common Lisp の話?
(define-syntax ellipses-syntax-test (syntax-rules ( ... ) ((_ x ... ) (list x )) )) (ellipses-syntax-test 7 ...) > '(7) これが出来ないのです
>>33 R5RS では syntax-rules で ... にマッチさせることは不可能。
まわりくどいけど、判定の一部を別の手続きにするくらいしかない。
(define (test x)
(equal? x '(7 ...)))
(define-syntax ellipses-syntax-test
(syntax-rules ()
((_ x ...)
(test '(x ...)))))
(ellipses-syntax-test 7 ...)
R7RS だと非常に簡単に回避する方法が用意されてる。 syntax-rules が従来よりひとつ多く引数を取ることができ、 ... のかわりに使う省略子を指定できる。 (define-syntax ellipses-syntax-test (syntax-rules :: (...) ((_ x ... ) (list x)))) (ellipses-syntax-test 7 ...) この場合は省略子は使ってないので適当な識別子を書いておけばいい。
R6RS ではパターンに ... は現れることは出来ないけど、 syntax-case なら fender 節でより詳細な判定が出来る。 (define-syntax ellipses-syntax-test (lambda(stx) (syntax-case stx () ((_ x y) (eqv? (syntax->datum #'y) '...) #'(list x))))) (ellipses-syntax-test 7 ...)
syntax-rules がネストした場合、 外側が展開されたときに (... ...) が ... に置換えられるということであって、 リテラルとしての ... を表すときに (... ...) が使えるという意味ではないよ。 ところで syntax->datum で文脈を剥してから ... と eqv? で比較するよりも free-identifier=? で比較した方が R6RS らしいかな。
define-macroだけではmactchマクロ作れないって事でいいの?
だけってどういうこと? 使える構文が define-macro だけってこと? そりゃ無理ぽ。
41 :
デフォルトの名無しさん :2013/09/16(月) 12:02:56.16
みんなSECDマシンってなんて発音? セクド? エスーイーシーディー?
>>42 間違って結果側の右下押したら
「エスイーシーディー」
とか言われてしまって?????ってなっちゃった
左の英語入力ボックスの方だと
セクィッドとセキッドの間くらいに聞こえるね
>>42 IBM の発音は イビーム だったのか…。
>>44 言語設定が英語以外になってね?w
フランス語やドイツ語とかだとイビエムって感じに聞こえるけど、
英語ならアイビーエムってけっこうはっきり聞こえるぞw
>>42 英語の略語?ってアルファベットを順番に発音するのが正しいと思ってた
DMAC ディーマック? ディエムエーシー?
clos シーロス? シーエルオーエス?
それにgoogle翻訳とかweblioとかの発音ってとこまで正しいのか気になる
community.schemewiki.org/?scheme-faq-macros にマクロでreverseする方法のってるけど (define-syntax reverse-order (syntax-rules () ((_ e) (reverse-order e ())) ((_ (e . rest) r) (reverse-order rest (e . r))) ((_ () r) r))) (reverse-order (2 3 -)) ;=> 1 階層深いところもreverseできない (reverse-order (2 (2 1 +) -)) ;=> 1
>>47 こんな感じかな。
(define-syntax reverse-order-deep
(syntax-rules ()
((_ e) (reverse-order-deep e ()))
((_ ((e ...) . rest) r) (reverse-order-deep rest ((reverse-order-deep (e ...)) . r)))
((_ (e . rest) r) (reverse-order-deep rest (e . r)))
((_ () r) r)))
Windows7 の lispbox の slime で portableAllegroServer を動かしたい とかいう質問はこのスレでいいのでしょうか?
いいんじゃないの 答えられる人がいるかどうかはさておき
>>47-48 srfi-53
使うと、驚くほど簡単にreverse-deepできる
なんでsrfi-53はwithdrawnなんだろう
こんなに便利なのに
syntax-rules が名前の衝突を回避してくれるのはletで導入した変数だけ? 自由変数として導入した変数は処理系依存なのかな?
マクロっていつ使うの?
今でしょ!
そういうのはいいから。
クールな返しにワラタ
On Lisp にわかりやすい指針が書かれてる。 マクロじゃなきゃ出来ないことをするときにマクロを使う。 逆にマクロでなくても出来ることにマクロは使わない方がいい。 要するに最後の手段なので普通のプログラムではマクロ定義の割合はかなり小さいことの方が多いと思う。 具体的にどういうときに使うかを知りたければ On Lisp はバランスのよい本だと思うよ。
OnLispはマクロの手前までしか読んでないなあ 読まねば
マクロをクローズアップしたような本もいくつかあるけど、 そういうのだとマクロの使用が既に前提になってるから 「使うことになったらこんな風に書けるよ」って感じなわけで 言語全体の中での位置付けがわかり難くて 「いつ使うか」ということに対する解は不充分なことがあると思う。 だから、全体を俯瞰しながらマクロの使いどころを解説している という意味で On Lisp のことをバランスが良いと評した。
というか、OnLispってマクロの本だよね?
そうだよ。 でも言語全体の中でのマクロの立ち位置がわかるというか 「いつ使うか」がわかりやすい本ってこと。
64 :
デフォルトの名無しさん :2013/10/02(水) 23:30:07.69
On Lispは訳本がひどいので原著がオススメ
65 :
デフォルトの名無しさん :2013/10/03(木) 00:14:54.37
原著はタダですしねぇ
訳書もドラフト版はタダで読めるし、基本的な考え方だけならそれで充分だと思うけど。 でも、そんなに高価なわけじゃないし買ってやれよ。 (俺は買ってないけど。)
67 :
デフォルトの名無しさん :2013/10/03(木) 01:40:35.86
Let Over Lambdaの日本語訳の訳の品質ってどうなんでしょう? 実店舗で見かけないので読んだ人の意見が聴きたいです。 訳も原著も通販位でしか買えそうにないので、訳がまずそうなら原著買いたいです。
うーん、自分は特に変だとは思わなかったけど…
LOL は難しかったので途中で投げ出した。翻訳は別に気にならなかったけど、何言ってるかさっぱりだった。あれは原文でも読みにくい気がする。
LOLむずいよね 一応全部読んだけど血肉になった感触がない
71 :
デフォルトの名無しさん :2013/10/03(木) 11:30:30.37
一回読んだだけでは血肉にはならないでしょ サンプルコードを一行一行丁寧に追った上で何周もして理解を深めるべきレベルの本
みなさんありがとうございます。 翻訳のクオリティは問題無さそうですね ただ流石に難しそうですが、、
LOL を読むより、もしまだなら、PAIP をお勧めする。あれはホンモノだ。
LOL って、 Let Over Lambda なのか、Land Of Lisp なのか…
75 :
デフォルトの名無しさん :2013/10/04(金) 02:35:43.73
Lisp in Small PiecesとThe Art of the Metaobject Protocolも忘れずに
76 :
デフォルトの名無しさん :2013/10/04(金) 02:37:32.73
LOL = Let Over Lambda LoL = Land of Lisp
SYJL = 素数夜曲:女王陛下のLISP
ONLS = On Lisp
FE = 深町英太郎
80 :
デフォルトの名無しさん :2013/10/04(金) 15:46:27.80
晒すなやw
Structure and Interpretation of Computer Programs = WH(和田本)
アマゾンのレビューに Let Over Lambda は On Lisp の続編て書いてあるけど、もしかしてこれもマクロの本ですか? 勘弁して
むしろマクロ過激派の筆頭エヴァンジェリストなんじゃないかあの本は
マクロとは何ぞや、を知らない状態で読んだ時 On Lisp より LOL の方が読みやすかったよ
LOL のマクロは何かわからんがすごい、と思うけど使う気になれない。本流じゃないと思う。
マクロ好きな人って、他人のマクロ定義を見ても普通のlispコードと同じ程度にはバグがないことを理解できるのだろうか defmacro が出てくるたびに、 ' と ` と , ばっかりのコードを読まされるこっちの身にもなってほしい
( ' と ` )
マクロに辟易してそうな顔、いいね
( ' λ ` )
中国人風だな。
( ^ マ ^ λ)
>>87 マクロは読むものじゃなく、展開するものだね
コードは読むものじゃなく、実行するものだね
macroexpandと逐次実行がナウなヤングにバカウケ
マクロのバグもそりゃあるだろうけど、そんなにデバッグ大変かな? あんまり苦労したことないなぁ。展開すれば分かるし。
>>96 逆に考えるんだ
「展開しなければ分からない」と
アナフォリックマクロっていうのはsyntax-rulesで書くのは絶対に不可能なんですか?
syntax-rulesでは無理だね syntax-caseなんかを使えば書けるよ
>>98 可能と言えば可能ではある。
まわりくどいし、面倒なだけで割にあわないと思うけどね。
101 :
デフォルトの名無しさん :2013/10/08(火) 00:19:07.16
法律論とクラッキングは横においておいて、 無断UPは徹底的に見つけ出して厳罰に処すべきだと思うが、どんなコンテンツであろうと無断DLはどんどんやっていいというスタイルこそが正しいWEBのあり方だと思う
俺は無断DLはしないよ ローカルにキャッシュするだけだよ
>>99 ググってみて出来るみたいだねってことが分かった
>>101 書籍のダウンロードは違法じゃない
著作権法第三十条
>著作権の目的となつている著作物(以下この款において単に「著作物」という。)は(略)次に掲げる場合を除き、その使用する者が複製することができる。
>三 著作権を侵害する自動公衆送信を受信して行うデジタル方式の録音又は録画を、その事実を知りながら行う場合
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
まあネット的には可燃案件なんですけどね
>>101 しょしんしゃなので sublime text というのをまだつかってます(汗
みたいなツイートとかイラッとくるなw金払わずに使い続けてそうだしw
つーかST2を初心者用エディタ呼ばわりしてるところもイラつくし、使ってもないEmacsやVimを上に見てるところもムカつく。権威主義?ワナビー?
sublime text というの、って言い回しの「というの」の気持ち悪さ。自分はこれ初心者用エディタって知ってますよ、一歩引いたうえで仕方なく使ってるんですよアピール。
周りのチンポどもも、こんな奴甘やかすなよ。童貞ばかりで本当に気持ち悪い。
尼のウィッシュリストを通してギフトが届いたら、すかさず他の本のリンクを貼りましょう。
>>108 Emacs や Vim が初心者にとって使い難い (ハードルが高い) のは試してみるまでもなく有名な事実だろ。
それを権威主義とはさすがに言い掛かりが過ぎる。
>尼のウィッシュリスト すごい、淫靡なものを想像しちゃった…
lispのためなら! この前やっと原始lispのコードを読みました,意外にいける気がしてきました
そうか。
これが後の「待ちGuile」事件である
MakefileをS式で書けるなら歓迎する
Makefileを直書きするときにschemeでも書けるようになったということ? でもmake使う層はautoconfに移行してるんじゃないのか? と言っても俺は5年以上前にsconsへ移行してから事情はよく知らないんですけどね
rms「GNUの開発言語はLispだから(震え声」
schemeの開発環境のオススメを教えてほしい。 windowsです。
どういう状況で使う予定とか自分のスキルとか、もうちょっと要望を言えよ。 どんな環境でも善し悪しがあるでよ。
DrRacketってやつを家では使ってるけど、大学ではemacsとGaucheを使うらしく、どうすべきか悩んでる。 ちなみに、現段階だとCとjavaを他に使うぐらい。 Cはvimで書いてて、javaはどうしようか悩んでるところ。 開発環境ってそれなりに揃える(というか同じ系統?)にすべきかな。 まだプログラミング経験が浅いので突っ込みどころたくさんあるだろうけど、お手柔らかにアドバイスお願いします
大学でGausheなのか なういね!
環境整えるのも、勉強だと思ふ。 Windowsなら仮想環境でLinuxで動かす、なども含めて。
>>124 大学の方が言語を変えるまで留年し続ける呪いをかけといた
>>125 けっこう最近のものなのか。
>>126 学校に合わせるために自力で環境整えろってことでしょうか。
MSが用意したもの以外を使うならwindowsよりlinux,macの方が向いてると思う
>>129 持ち運びできるサイズのノートパソコンが欲しいので、Macの購入は検討していますが、自宅では当面はWindowsになるかと思います。。
ちなみに大学はMacです。
>>124 Scheme は処理系ごとの拡張が多いからなぁ。
入門レベルの範囲内ならどれを使ってもそれほど大きな差はないと思うけど、
これから入門する人にとってはその小さな差でハマる可能性もあるし、
大学で Emacs と Gauche を使うというならそれに合わせといた方が良いと思うよ。
でも、ひとつに固執する必要もないと思う。
他にも色々と入れておいて、大学でやるのとは別に色々と試してみてもいいんじゃないかな。
>>131 なるほど。
とりあえず家ではいくつかの環境を用意しつつもemacs+Gauche主体でやってみます。
X-WindowなしのフルスクリーンEmacsで勉強すると気分出るぞ。
>>134 いや大丈夫だろ
コンソールでemacs使ったことない?
とりあえずコンソールが適当な漢字コードで日本語を表示できれば、 emacs単独でコンソールに出力する漢字コードをいくらでも変更できるからね screenとかを使うのもいいけど
手元がWindowsでLinuxか何かにログインして使うなら、PuTTYのフルスクリーンモードにすると楽しい。
中高生向けの事業だとしたらすばら
しくない。
「好きい夢」って名前は読むだけで恥ずかしくなるな
本人は上手いこと言ってるつもりなんだろうな。
アニヲタっぽい
それより飲み屋だな
またまたカッコつけちゃって〜頼むよ〜
>>146 実際オッサンだからセンスがオッサンなのは仕方なくね?
好き芋 秋だなぁ〜
好き淫夢(察し)
ガイスティールは淫夢厨だったンゴwwwwwwwwwwwwwwwwww
たまげたなあ
360度評価
当人がオッサンだろうが何だろうが事業としてやるんだったらターゲットにアピールできているかどうかだけが肝心。 中高生あたりに対してもウケ狙いであえてオッサンセンスでやってみるというのも有りだとは思うけど、この場合は笑わせてるつもりで笑われてるだけの道化。 中高生向けにはもっと中二病 (GEEK SENSE) っぽい名前の方がいいだろ jk shiro さんの会社名 Scheme Arts とか簡潔なのに超かっけー。 意味はとりあえず置いといて響きだけで濡れる。 ステキ!抱いて!ってなる。
そういうのはすごく失礼だからやめよう(提案)
日本のLispコミュニティなんて本を積み上げるだけで生産性皆無の口先インテリもどきばかりだから せめて邪魔しないで差し上げろ
http://r-2ch.com/t/livejupiter/1378495564/#54 改変ネタ
お盆に、親父と長野の親戚の家にいった。
伯父(高卒市議)も来ていた。
伯父「○○君!小さい頃よくだっこしてやったんだぞ!がっはっはー」
俺 「覚えていますよ」
伯父「どんな名前にしたんだ?」
俺 「スキームアーツ、あっ、 Scheme Arts です」
伯父「そうか、 Scheme Arts か!高校時代遊びすぎたんだろ!でもよかったな!」
「お前と同じ年の息子の××覚えているだろ!好きい夢だぞ!(勝利者宣言)」
親父「無言・・・(瞳が潤んでいた)」
伯父「おい、好きい夢こっちこい(息子の××を呼ぶ)」
「○○も大学生だ。○○と昔よく遊んだだろ!」
向こうでも大学の話をしていたらしい××が鼻高々でやってきた。
××「(馴れ馴れしく)○○、久しぶりー、元気!」
「あっ、叔父さん、こんにちは、俺、今年から好きい夢始めました。」
親父「そうか、大きくなったな」
××「好きい夢やってるんですよー(勝利者宣言)○○君はなにやってるの?」
俺 「Scheme Arts www」
ニヤついている伯父を尻目に、一瞬にして××の顔色が変わった。
伯父「○○と取引してやれよw」
××「(しばし、絶句)・・・みっともないからやめてくれよ親父」
伯父「?」
動揺しまくりの××は伯父を速攻連れだした。
以後、伯父親子は、俺達のいるテーブルに加わらなかった。
久しぶりに無口な親父の晴れ晴れとした顔をみた。
帰り際、充血した目をした伯父と目があった。
好きい夢の方は現行で日本のLispコミュニティに 多大な貢献をされておられる5人に間違いなく入るからな 恐れ多いこと書くんじゃねーよ穀潰しども
>>160 お前もセンスねーな。
>>161 貢献がないわけじゃないが、5人の内にっていうのは言いすぎだろー。
今一番注目の女子schemerって誰ですか?
あやぴー
サスマンの嫁
女王陛下
彼のLispに対するで甚大な仕事量を無償で公開し続けていただけることに頭が下がる lispスゲー lispスゲーって騒ぎ立ててる脳タリン共は見習え それかcametanを仰いで情報を引き出せ執筆させるのじゃ!
ホモはなんjに帰って、どうぞ
>>168 さあ?
プロのプログラマみたいだし、SCHEMEもほどほどには使えるんじゃね。
>>167 cametan も割といいかげんなこと言ってると思う。
歴史的事情についてはおにぎりの人とか、
理論面はにゃーんの人とかが詳しいという印象。
その話はもう済んだ
勝手に終わらせるなよ
gaucheしかインストール成功しなかったのでよく分からないのですが、 gauche.arrayみたいなモジュールの中の関数はどれだけ可搬性があるのでしょうか たとえば、make-arrayの引数にshapeを使うようなスタイルは他のscheme実装でもやってるのでしょうか
スキームアッー
スキームとアッーな関係になるなら本望
スティール兄貴が黙ってないんだぜ?
He's so guy.
>>160 信越ってひとくくりにするけど新潟と長野は別だから (震え声
信越というくくり方の意味を初めて知った
Schemeでclassとか構造体を表現する標準は 結局どれになるのでしょうか srfiでまとめられていますか?
構造体なら SRFI-9 の define-record-type が R7RS に採用されたのでそれが標準になるのでは
スーパーラムオブラザーズはまだですか?
>>183 R6RS では SRFI-76 がベースだな。
R6RS は要らない子
んなこたーない。
R20RSとか征くとどうなってるんだろうな
190 :
デフォルトの名無しさん :2013/10/15(火) 19:39:07.27
.Netかj2eeに対抗できる
そこ頃には .Net も j2ee も廃れてるだろ。 常識的に考えて。
192 :
デフォルトの名無しさん :2013/10/15(火) 22:42:01.15
.netもjavaもiso規格で残るから・・・(震え声)
さすがに20回も改訂したらスタックオーバーフローは起こさなくてもメタメタなものになるだろな。 それよりもCommonLispの改訂版を作るべきだ。
末尾再帰最適化、ソケット、スレッド、 正規表現を盛り込まれたCommonLispが欲しい
195 :
デフォルトの名無しさん :2013/10/16(水) 21:07:38.55
SICPって第1版と第2版で内容的にどれくらい違いがあるの?
日本語の正規表現処理がまともにできるのはGaucheだけ と数年前に聞いたのだけど,今も状況は同じなの? Mecab,CabochaのバインディングもGaucheしか存在しないみたいだけど
CabochaのGaucheバインディングの作者が 今はpython使ってるみたいだけど 何があったんだろう
>>196 簡単に試してみた。 Sagittarius, Racket, Ypsilon, Mosh は出来るっぽい。
エッジケースまで確かめたわけじゃないから「まともに」というのがどのあたりまでのことを言っているのかによって判断が分かれるかもしんないけど、
さっぱり話にならないというほどではないと思う。
>>194 これよりも先にコマンドライン引数を入れてほしいわ
何を今更。
R6RSは黒歴史扱い。
R6RS 自体はそんなに悪くないと俺は思ってんだよな。 前にも書いたことだけど、機能は相互作用があるものだからある部分の詳細を詰めようとすれば 他の部分にも決めなきゃならないことがどんどん出てきて、最終的にはある程度の大きさになるのは仕方ない。 R6RS が批判されたのは決定プロセスが急ぎすぎたということ。 出てきた仕様の穴を埋めることに終始してしまい、 大元のモデルが妥当かという議論が欠けているように見える。 だから R6RS は R6RS の方針に於いての穴はそんなにないけど、 そもそも R6RS の基本思想が妥当じゃない (Scheme 的でない) かもしれないという話だと思ってる。
emacsでgaucheを使っています goshのプロンプト画面で、common lispのslimeのように,を入力したらメニュー(slime-handle-repl-shortcut)が表示されるようにできないのでしょうか 設定方法があるかもしれませんが探せなかったので質問しました
Gaucheのswankサーバが無かったっけ? それでSLIMEを使えばいいのでは。
gaucheのswankサーバは古いからそのままだと動かないよ
slime-handle-repl-shortcut ってどんな機能?
209 :
デフォルトの名無しさん :2013/10/22(火) 05:45:57.07
> slime-handle-repl-shortcut slime-repl-mode のキー "," に割り当てられている。 REPLの行の先頭で "," を入力すると、 SLIMEのコマンドを入力するミニバッファ(TABで補完可)が出る。
slime ではない emacs でコマンド入力モードになったからと言って 何に対してコマンドを送ろうと言うのか。
コマンドー
Lispはゴミ
そうか。
そうだ
SCHEME関連の質問はどこでするのが一番良い?
ここでしょ
>>216 Ruby厨を装って、
は?schemeってこんなこともできないの?劣化Rubyじゃん
みたいな風に質問するのおすすめ
2chやTwitterでの基本的な煽り技だよね。 Ruby厨は実際にそんな感じだから説得力あるし。
それ使わないほうがいいよ まともな回答がついてないことが非常に多い
>>219 >2chやTwitterでの基本的な煽り技だよね。
昔からある煽り技だよね、たとえば街宣右翼とか....
好きな言語があるのなら、その良さをより高めようと努力するのが日本人だけど、
アンチRuby派は、Ruby使いに成り済ましてまで、Rubyの脚を引っ張ることに心血を注ぐ
まったく理解不能だ
>Ruby厨は実際にそんな感じだから説得力あるし。
意訳してみた:「Ruby厨は実際にそんな感じだから説得力あるニ... し。」
まともなRuby使いなら、RubyのルーツがLispにあるのを知っているから、
>>216 みたいな質問はしないね
逆に、Lisp/SchemeのこんなことがRubyでもできるようにならないか?という事に関心を持つ
Lispに有ってRubyにないものって何か有るか? もうかなりの機能は吸収されただろうし、 されてないものは要らないと判断したものじゃないのか?
s式
型宣言とかディスアセンブルとか。
アンチとか
マクロ
>>225 ワラタけどそれはすでにあるような気がする
SICPとLOL
OL
100歩譲ってマクロを認めるとしても、ちゃんとした人が作って承認されたマクロだけを認めるべき
>>233 ちゃんとした人って何だよ。 そういうのはお前の脳内だけで勘弁な。
審査を経て承認されたものだけが取り込まれるのなら、マクロというよりただの構文糖じゃねーか。
>>235 逆に言うと、マクロは糖衣構文だけにすべき
普通にコーディング規約で対処するべき階層の問題だと思うが
マクロは未知の状況に対する保険ではなく、未知の不具合を生み出すリスクである
ま、それもトレードオフだろ。 未知の状況に対処するんだから不具合だって未知のものが出てくることだって有るわな。 打てる手段が無いよりはやっつけ仕事でも出来ることがある方が良いってのがLISPの選択。
マクロは、ただの書き換え程度ならまだかわいいんだけど、実行フローを表から隠すのがダメ OnLispとかだと、新しい実行制御を組み込めるのが利点とか言ってるけど、使い捨てプログラムでもない限り、どう考えても害悪だと思う
>>241 いや、それは逆だろ。 全く違うパラダイムでさえ隠蔽 (抽象化) できる方法じゃないか。
最初から欲しいパラダイムを提供している言語 (処理系) が有るならそれを使うべきではあるが、
場合によっては組み合わせたいことだって有るだろうし。
Rubyの数式処理ソフトってないよね? maximaを超えるものがない
>>242 その抽象化が正しいことを場合によってはいちいち expand して確認しないといけない
表面上は綺麗に抽象化されているように見えも、展開したときに関数の実行順や実行回数がおかしなことになってる
>>244 そりゃマクロじゃなくても同じことだろ。 いつだってバグを混入し得ることにかわりない。
問題があったときにマクロを直せばいいところを
隠蔽せずに書くってことはおかしな実行順や実行回数がないことを全ての箇所で確認しなきゃならないってことだぞ。
>>245 マクロによる抽象化と関数による抽象化の一番の違いは、マクロがコード生成コードという点
次に制御構造をいじくるという点
具体的に言うと、特殊形式に渡した引数を評価する順番がまりごとに異なるという点
関数のデバッグみたいに、引数と値を比べて、関数を記述してあるソースを書き直して終わりってわけじゃないんだ
俺は
>>237 の意見だな
目の前に解決しなきゃいけない問題があってあんまり検討してないけどマクロじゃなきゃできない気がするならマクロを使う
あとで高階関数でいいじゃんってなることが多いけど
>>246 ここまで議論を眺めてて食い違っている点を理解した。
要するに
>>246 は制御フローを弄るってところで既に忌避感を持ってるんだな。
OnLisp だって何も不要なところで制御フローを変えろと言ってるわけじゃない。
「制御フローを変えられればすっきり出来るからどうにかなんない?」
という他の言語でなら無茶ぶりと言える要求があったときに、
そんな無茶にもなんとか応えられますよというのが OnLisp が言ってることなんだよ。
制御フローを変えないより変えた方が良い状況になったならという前提を設定したときの話なんだから、
その前提条件が気に入らないというんじゃ噛み合わないよ。
>>248 その前提を踏まえた上で、マクロの使用は、処理系がデフォルトで提供するようなきちんと検査された糖衣構文程度に留めるべき、というのが我々の意見
マクロつかったプログラミングしたいなら、型情報やフローがコードに陽に現れてる言語にマクロ機能を追加して、その言語でやるべき
Lispみたいにデータに型情報が隠れてる言語でやるのは勘弁してほしい
出、出た〜www我々とか言って勝手に自分の意見が多数派奴〜www
>>249 踏まえるどころか更に大前提たる Lisp を否定しちゃってるじゃないの。
あらかじめ解くべき問題がはっきりしててそれに都合の良い言語があるならそれを使いますがな。
(なるべく慣れた Lisp を使いたいということも有り得るけど。)
Lisp プログラミングしてるときに面倒な問題に遭遇したら切り札としてマクロがありますよっていう話じゃん。
>>237 にも書かれてるけど「未知の状況に対する保険」なんだよ。
>>252 解くべき問題のクラスはあらかじめはっきりしてる
マクロなしでも解けることだけは分かってる
未知の状況に対する保険ならば、それこそ、きちんとした人や組織が認めてみんなで使い古したマクロだけを使うべき
というか、そもそもそんな状況でマクロを使うべきではない
マクロこそLispだと主張するなら、我々はLispを否定する
Lispは否定する自由も認めている
>>253 マクロを使う利点をまとめると
- 見た目がすっきりする
- 構文に名前を付けられる
- 同じことを繰り返し書かなくてよくなる
といったところかな。
マクロは極論すればただ短く書けるだけなんだから、
マクロを使わなければ解けない問題というのは無いというのはあらためて言うまでもない。
マクロを積極的に使わなくても書ける、というのはその通り。
でも、それを言うならプログラムを手続きに小分けせずベタ書きしたって動きはするよ。
だけど、適度に分割したり組み合わせたりすることでわかりやすくしてるわけだよね。
そんでもって人によってどの程度の抽象化がわかりやすいかは違うわけだよね。
OnLisp にある prolog もどきがあなたのやり方にそぐわないということはもちろんあり得る。
動作がなんとなく見える程度に薄いマクロをあなたが定義する自由だってあるし、
全くマクロを使わない自由だってもちろん有って、 Lisp という言語はその自由を奪うことはない。
だけど、私があの Prolog もどきを使うとしたらなるべく隠蔽 (抽象化) したいと思うし、
そのためにはマクロは欠くことの出来ないものだとも思う。
それを「使うべきでない」などと言われる筋合いもない。
勝手に脳内変換すると 独自マクロ=(C系の)コンパイラによる構文独自拡張って感じかな? javaのAOPとかは、どこに当たるんだろう。
例えば、ある言語で、その言語のコンパイラの構文解析器をユーザのコードから直接いじる機能があったとしたら、その機能に対してどうコメントするだろうか 例えば、ありとあらゆる要素を外見上区別できない形で表現できる高度に抽象化された言語で、コードに並んだ要素の置き換えや削除をするコードをそのコードの中の記号の羅列で自動生成する機能があったとしたら、その機能に対してどうコメントするだろうか 例えば、それらの機能が '`,@の羅列で定義されているとしたら、どうコメントするだろうか 他人の自由を最大限尊重し、メモ帳+コマンドプロンプトでschemeプログラムする大学生をも笑顔で見守る我々でも、やはり「使うべきではない」と言うであろう
我々って誰やねん
>>255 >OnLisp にある prolog もどき
使うならminiKanrenの方が便利だし好きだな
>>253 だからさー、マクロは切り札なんだってばよ。
他に方法があるときにマクロを使うなっていうのはOn Lispでも言われてることだし、
それでもどうしてもマクロが必要になったときの話なのに、
「いいや、マクロは要らない」じゃ話になんないじゃん。
そりゃ使わずに済む状況ならそれに越したことはないよ。
Lispが進化的モデルでの開発に向いてるのは今更言うことでもないだろ。
「問題(要求)がはっきりしていないとき」と前提を定めているのに、
「いいや、はっきりしてる」じゃ話になんないじゃん。
そりゃはっきりしてない状況よりはっきりしてる状況ならそれに越したことはないよ。
それでもはっきりしてない状況に遭遇するから困るんじゃん。
そういうときの話をしてるんじゃん。
前提を覆すのはやめてくれよ。
lispマクロは、S式(構文木)のおかげで、C++TemplateぐらいのことがS式で簡単に出来るイメージなのだか、 潜在欲求としては、見分けつくように構文分けて欲しいということなのかね?
>>261 steps面白うそうだね、紹介してくれてありがとう
R6RSとかR7RSの日本語のリファレンス本ってないの?
amazonから > 内容紹介 > IEEE規格案を完全に実現したSchemeインタープリタ.パソコン用としては世界最高速度. > グラフィック関数を多数用意.教育用として,また実用システムとして十分な性能をもつ.
100円くらいなら買ってもいいわ
>>270 最近の若者ってほんと金持ってないんだな
携帯で毎月万単位使ってるんだから、本なんか買う余裕ないよ
女も入れて44%だろ。
IEEEと書いてあるからIEEE754のことか、と一瞬勘違いしたわらし
sublime textサイコーとか言ってはしゃいでる周りの若者も金払わずにずっと試用状態だし、みんな貧しすぎ
スクショってスク水ションベンの略でしょ?
279 :
デフォルトの名無しさん :2013/10/29(火) 21:57:03.76
それだったら取っておいて欲しい スクリーンショットの方ならいらない
ションベンは実は排泄直後はそれほど汚くはない。 が、時間を置くと分単位で急激に雑菌が増える。
281 :
デフォルトの名無しさん :2013/10/30(水) 01:48:44.96
無菌の冷凍室で保存しよう
うんこは実は排泄直後はそれほど汚くはない。 が、時間を置くと分単位で急激に雑菌が増える。
それは違う。 ウンコは数割が菌の死骸だろ。 膀胱はほとんど無菌だ。
細菌よりも尿素→アンモニアの方が有害なんじゃねーの?
>>282 食ったものが体内で処理される過程というのは、
腸内細菌による発酵が重要な役割をはたしている。
大便の半分以上が菌の死骸。
>>268-269 Advanced LISP Technology (Advanced Information Processing Technology) [Kindle版]
Hiroshi G. Okuno (著, 編集), Taiichi Yuasa (編集)
Kindle版は洋書版しかなかった orz
時代遅れのLispの癖に Advancedだってよw
LOLをschemeでやろうと思うんだけど、リードマクロとコンパイラマクロが使える処理系リストってない?
コンパイラマクロは知らんがリードマクロが使える Scheme は Sagittarius くらいじゃないか。
んなわきゃない
>>288 リードマクロがRacket、chicken、Gambit、Sagittarius。
その中でRacketとchickenにコンパイラマクロがあるみたい。
軽く検索しただけなので、おそらく抜けがある。
>>291 静的型のLisp方言か。なかなか面白そう。
294 :
288 :2013/10/31(木) 19:52:55.96
コンパイラマクロの有用性がわかんね
コンパイラマクロの用途は最適化しかないんじゃないの。 CLらしい機能だよな。 SCHEMEでも内部的に似たような機構を持ってるものにまで広げればもっと有りそうな気がする。
リーダマクロ=外部言語の実装、マクロ=他言語における文法、 コンパイラマクロ=コンパイル時計算の一種、アナフォリック系マクロ=文脈の操作というイメージでいる。
コンパイラマクロは処理系の関数がタコな時に使うイメージ
逆に、そういう手段を提供してるからデフォルトで提供される機能はナイーブな方が楽ってこともあるかもよ?
R7RS LARGEにはERマクロ入るの?
SCHEMEのミニマル思想的に不要だと思うお
mcclim使ってる人いないの? それを使って色々作ってみたいんだけど 日本語のドキュメント全然見つからなくて辛い
>>300-301 それをいうならsyntax-rulesはパターンマッチと健全性がごっちゃになってるのがScheme的じゃない。
パターンマッチはR5RSの上でもポータブルに書けるのでプリミティブとして用意すべきなのはERやSCのどれかであるべき。
そうなってないのは議論に決着が付いてないからってだけで、syntax-rulesが最良ということを意味しない。
lispの本ってどれも高いな 需要が少ないから高くなるのは仕方ないのかな 実用common lispとか10000円近くするしボンビーには厳しい
srfi-53を正式にsrfiに入れて欲しい 何か手直してしてcomp.lang.schemeに上げてみればいいのだろうか
308 :
デフォルトの名無しさん :2013/11/03(日) 12:21:35.13
>>302 ブログの記事なら幾つか。
「letter: CLIM(McCLIM) で Hello World! まで」、「McCLIM で日本語表示できた」等12件
www.google.com/search?q=intitle:mcclim+OR+intitle%3Aclim+site%3Aread-eval-print.blogspot.com&num=20
「プログラマ未満: McCLIMでライフゲーム」等5件
www.google.com/search?q=intitle:clim+OR+intitle%3Amcclim+site%3Akurohuku.blogspot.com
#:g1: McCLIMのインスペクタとデバッガ
g000001.cddddr.org/1295072383
ユーザ数の少ないものを使うとなると情報が少ないのは仕方のないことなので、 自分が使ってみて気になったことは発信してあげよう。
やっぱり英語読めないと厳しそうだな 何から手を付けていいのやら
>>309 20年前まではCかFortranかlispの三択だったのに…
>>310 おおよその動作モデルがわかればあとは英語でもそれほど苦にならないんだけど、
チュートリアルが英語だとちょっとキビしいと俺も思う。
>>303 そういう事情ならSMALLにsyntax-rulesが有ってLARGEにERってのはおかしいな。
20年前ってperlもpythonもc++もjavaもあったのに使わなかったの?
>>315 20年前にjavaを知ってた人は、英語の文献もスラスラ読めてどの言語でも使えてる
20年前のperlはただの正規表現処理付きのシェルにすぎない
20年前のpythonはインタプリタ言語のオモチャを作りましたと喜んでるレベル
20年前のperlてawkに毛が生えたようなもんやで。 テキスト処理にはそれなりに使えたかもしれへんけど、 業務システムとかをまるっと記述できるほどの能力はあらへん。 javaも当時はアプレットを書くためのもんという認識で、 パフォーマンスも激遅やったしな。 有ったいうたかてまともに使えるもんになっとったわけでないで。
小飼「perlはもうほとんどcommon lispだ」 って言ってたけど。
>>318 どんな言語もそのシステムの中にlispを組み込むことになるという格言がありまして…
小飼氏はMITでSICPの洗礼を受けてLisp好きなんだよね確か。
20年前というとラクダ本が出版された頃だろ OOな記述も出来るようになってたし、モジュールも結構揃ってた
そういうクズの名前出すなよ
20 年前だと Perl は CGI 用言語として定着してた感じじゃなかったか。
マクロ展開時にユーザー定義関数を使えないようにする利点ってなんだろう
このスレのレベルの高い諸兄の以下の書籍に対する評価ってどんなもんですか? 「素数夜曲」 「Land of LISP」 「プログラミングGauche」 一気に全部買うのはお金かかるし、どれから読むのがいいのか、みたいなアドバイスも欲しいです。
下の二つは持ってるけどland of lispの方が面白いし身になる プログラミングgaucheはgaucheの機能の説明が多くて退屈だったしあまり記憶に残らない
オミトロンみたいなWeb個人フィルターを htmlpragで書く方法ないのでしょうか Racketをパイプで既存のプロキシソフトにうめこめればいいのでしょうか
>>329 どれも良い本だと思うけど、それぞれ扱ってる内容が違う。
素数夜曲は数学を題材にしたものだし、
Land of Lisp は Common Lisp の入門書だし、
プログラミングGauche は Gauche の本じゃないか。
まずは自分が何をやりたいのかをよく考えるといいよ。
>>330 「プログラミングGauche」も前半は Scheme 一般についての入門書として使えると思う。
ただ、 Scheme 一般と Gauche 特有の部分の境界がどこか初心者にはよくわからないかもしれないかなぁ。
C言語erだった俺がScheme始める入門書として「プログラミングGauche」読んだけど、 メモリがどう管理されてるのか一言も書いてなくて読んでて困った。
>>329 「Little Schemer」入ってないのかよ?
そもそもschemeにメモリ管理の実装に関する仕様ってあるの?
仕様にはないけど、使い方のコツみたいなものはある。 Haskell の話になるけど Real World Haskell ではメモリ消費量が大きい箇所をプロファイラで特定したり、 更にそれを改善する手順が説明されてたりしてたし、 仕様になくても現実問題として相手にしなきゃならないことはあるから、 そういうのをクローズアップしてまとめた文書があると助かるかもね。 ただ、やっぱり処理系ごとの差は大きいと思うので、 各処理系のコミュニティで聞いてみるのが一番いいかも。
(call/cc procedure?)が#tになるのはありなの?
#tで普通だと思うけど、どのへんが疑問なの?
>>337 call/cc は「継続を手続としてパッケージ化したもの」を作ることになってる。
なので、扱いとしては手続そのものであって、もちろん procedure? は #t と判定するよ。
341 :
337 :2013/11/06(水) 21:38:59.92
>>340 わかりました
継続と手続は別物だと思ってましたけど、SCHEMEでは継続を手続きとして抽象化したものにして扱うんですね
手続き「継続私」
SICPの後でコンパイラのドラゴン本を読んでも あまり役に立たない?
おまえには役に立たない
役には立つけど、Lispでプログラムを書くにはあまり関係ない。
LispのコンパイラをLispで書くなら役に立つんでない?
schemeにatom?が無いのはなんで?
むしろどうして必要だと思ったんだ?
純LISPの世界ではconsセルでなければアトムっていう単純な定義が出来るけど、 Schemeの世界にはベクタもレコードもあるわけだし、 アトムであるっていうのはどういう基準にすればいいのか自明ではないだろ。
>>343 scheme -> java トランスレータ作るときに大いに参考にした
> 二冊を一冊にまとめてる? まとめてる。
日本語訳はまかせた
Ark
世の中には言い出しっぺの法則というものがあってだな…
>>284 >尿素→アンモニア
そんな経路はない
哺乳類:胎盤:尿素
鳥類:卵:尿酸
魚類:アンモニア
で、r7rs はホントにスモールな感じなの?
R7RS は Small と Large のふたつに分けて考えようというものではあるけど、 Small と Large の呼び名は便宜的なものであって公式名というわけではないし、 Small が世間一般の言語と比べて小さいという意味でもないよ。 まぁ R7RS Small は R5RS よりは大きい。
むしろ、R5RSからマクロとかの仕様を削除したR5RS-を策定すべき
何がうれしいんだ?
それR4RSとか言わんか?
>>362 バカ大学生の自作schemeでも統一仕様は満たしていると言えるようになるので、scheme文化が花開く
すべきとか言ってる間にやればいーんじゃねーのと思う。 実際、勝手に派生した ERR5RS とかだってあるわけだしさ。 ある機能を使わないってだけなら言語仕様ってほどのものじゃなくてコーディングルールで済む話だし。 使わない機能を羅列して、そのコーディングルールにそれっぽい名前をつけて提示しろよ。
>>366 R7RSもコーディングルールにそれっぽい名前をつけて提示すればいいと思う
まったくだ。 R6RS でええのや。
>>364 現状でもちょっとしたプログラムを書くだけでも処理系の拡張を全く使わずには無理だし、
ポータビリティもクソもない状態なわけで、
更にそれより小さな R5RS のサブセットを満たすだけの何にも使えない、
ただ名目の上で「仕様を満してる」だけの処理系があっても文化に貢献するとは思えないな。
仕事には使うなら仕様に対する合致具合は気にするけど、
学生がそんなものを目指したって仕方ないだろ。
仕様なんか気にせず面白みのある新要素を考えて欲しいと思う。
Lispは時代遅れ 文化に貢献するとか無理
>>370 具体性が無い煽りには反論できないので盛り上がらないよ。
文化に貢献できるレベルのプログラマは 使用する言語にLispなんて選ばない 数十年前なら話は別だが
>>372 ひげぽんとか史朗さんとかカトーさんを dis ってんの?
Lispで作られたそこそこ有用なプログラムって 他に良い選択肢がなかった時代に作られたものばかり Webで言えばCGIでCやPerlが使われていたような時代
ひげぽんは文化に貢献できるレベルじゃないしょ
「レベルに関係なくプログラマは文化に貢献しない」ってところで手を打とうじゃないか
文化に貢献できるレベルは百万人に一人とかそんなんだからな
文化に貢献の意味がわからん…
>物事を横断的に扱うようなところでは Lisp が役立つところ それはどこ?
Lispって他の言語とは違う見方で見られてるよな そろそろpythonやrubyみたいな言語と同じ扱いにしてほしい そうじゃないとLisp使ってるだけで差別されるし色々と生きづらい
Lisp使っていると優遇されるよ 昔Lisp使っていた人が今偉くなっているし
言語の新概念なんかは、Lisp族で書くのが一番楽だが。 他の言語が自慢する概念さえ楽々実装して弄り放題。
それ本当? 今中卒ニートでそろそろ就職しないとまずいんだけど Lispで適当なプログラム書いてるし処理系も作ったことあるんだけど大丈夫なのかな
>>375-378 そうか?
例えば日本文化とか言ったときには日本人全体が少しづつ積み重ねたものが結果的に日本文化になっているのであって、
少数の職人で厳密に計算して作ってるわけじゃないだろ。
Scheme の仕様や実装に直接かかわるような人は全体の割合から言えば少ないかもしれないけど、
それだって使う人がいなきゃ意味がないんだぜ。
>>381 すごくわかる。
Lisp って普通の言語だよな!
素子〜〜〜ッォ!!
>>384 釣りっぽいが、マジならgithubで公開して、履歴書につけとけ。
積み重ねなのはそうだけど 積み重ならず消えていくものが殆どで 今残っている文化は優れたものの積み重ねなんだと思うよ
後世に残る優れた文化の土台を作れる人は百万人に一人くらいで その土台の上に積み重ねができる人が千人に一人くらい
昔はろくな言語が無かったから 優れた人がLispを選ぶ可能性が高かったけど 今では他の言語を選ぶ可能性が高い
定期的に変なアンチが湧くな。 キモさから言って、和田先生に粘着してたのと同一人物だろうけど。
>>393 消えていくものがなければ残るものだってない。
後世に残るものを作った人だけしか当時いなかったとして、
その人達は成果を残せたと思うか?
比較優位って奴だ。
和田先生とか呼ぶ方が 普通の人から見たらキモイよ
元大学教授を先生と呼ぶのがキモイだと。 やはり同一人物か。頭の悪さでバレバレ。
間違って「和田栄一」でググったら創価学会の人だった。
和田先生とかが不甲斐なかったから 日本は外国に負けているわけで 尊敬するような対象じゃないだろ
大学教授なんて先生って呼ぶほどのもんじゃないだろ
>>398 和田氏の今の肩書 (研究顧問) でも先生と付けて違和感はないな。
なんか話題がそれてるぞ。
和田先生とか普通の人に聞いたら100人中100人知らないし 知る価値もない そのレベルの人を神とあがめる連中はキモイ
>>400 どうだろう。
研究内容の問題というより政策としての問題だと思う。
和田さんに責任があるとは言えないんじゃないかな。
和田さんに研究顧問とかさせない方がいいよ ますます世界から取り残されるわ
責任はないけど あがめるほどの結果も出してない 和田先生とか呼ぶ人たちのあがめようはキモイ
新興宗教にはまっている人が 教祖をあがめるような なんともいえないきもさがある
そうなんだ すごいね
>>409 そんなのはごく一部だけだろ。
というかたぶん一人とか二人だと思う。
いまだにLispが優れているとか思っている人は 昔の他に選択肢がなくて優れた人がいたころのイメージをひきずっている 他が進歩してLispから優れた人がいなくなったのに 頭の中がそのままだから時代遅れになっている 世間一般の評価との乖離が著しい
他の言語の使い手も (少なくとも特定の領域においては) それぞれ自分が使っている言語が最強だと思ってんじゃないの? それと同程度には Lisp が最強だと思ってもいいと思うけどな。 優劣はともかくとして少なくとも私は Scheme を好きだよ。
典型的なLisperのLispに対する評価は神の言語だよ 使用者がそういう風に思っている言語は他にないんじゃないかな 根拠がまだ優れた人がいたころの大昔の実績しかないんだけどね
すぐれた神の言語Lispを使っている俺は選ばれた人間で Lispを使っていない人間は愚人
>>412 なるほどー参考になりますー
あなたの思うより優れた言語がぜひ知りたいので、
Lispと比較してどう優れてるのか根拠つきで教えていただければ幸いですー
よろしくお願いします
あれネタだよな 本気にしてる奴いたんだ
重症のキチガイLisperはネタじゃなくて 真実だと思っているよ
Lispについて好意的な意見を述べる人は多いけど 実際に使っている人は驚くほど少ない
Lisp が神の言語ってのを信じるような奴はグレアムが Lisp で書かれているっていうのも信じてそうだなw
ネタはネタであると見抜ける人でないと(LISPを使うのは)難しい
Lispを神の言語と言われて ネタだと思っちゃう人は他の言語を使ったほうが 幸せになれると思う
キチガイktkr
>>388 いや、そういうネタはいいからカトーって誰よ
427 :
デフォルトの名無しさん :2013/11/10(日) 18:05:44.29
世界の全てがLispで記述できる! 数式処理システムのREDUCEはLispで書かれ 今でも現役でiPhoneアプリにさえ入っている。
原理的にはチューリング完全なら世界の全てを記述することは可能なんじゃないの? Lispでなくても。
えっお前らまだ自分自身をLispで記述してないの?
まさか〜 Lisperたるもの自分をLispで定義するのは当然じゃないっスか〜
仕様を満たしてるかチェックするツールをR*RSごとに用意して、そのチェッカを通ったらR*RSを名乗ってよい という時代が来ると思ってたのに…
文化に貢献というのがなんかのスイッチだったらしい
唐突に和田先生とか言い出す輩は 和田さんがニュートンやアインシュタインと同等かそれ以上であるかような話ぶりだからな そりゃキモイわ
またその話題か。 もうええっちゅうねん。 ←突っ込みは何故か大阪弁風になる
言語言語で得意不得意があるからlisp最強だとは思わないけど、 rubyやpythonにユーザー数で負けているのは釈然としない
元Lispユーザーのpython、rubyユーザーに 移った理由を聞いてみるといいんじゃね
あのへんはシステム管理ツールを抑えたのが貢献してる。 システムにほぼ標準で入った事で、シス管連中がPerlから移行した。
pythonとか欲しいライブラリが何でもあって すぐ使えるし
ライブラリもあるけど括弧がノイズになって気楽に出来無くなってるのが問題じゃないかな
>>433 ノーベル賞に情報科学賞があれば和田さんもアインシュタインの横にならんでいたんだよ
和田賞を作るべき
LL、ML系言語が出来てからの徐々に出番が減った。 情報科でもlispでプログラミング言語の知識を教える機会も減った。 コンピュータの知識を修得する過程でemacs触る機会が減った。 アプリケーション組み込み系のlisp採用率も減った。 マークアップ言語もSGML+DSSSLからXML+XSLやHTML+CSS+JSに変わってしまったわけで。
lispはLL・ML言語じゃなかったのか…
と思ったけど、clojureは、javaやLLからミュータブルと状態を持ったオブジェクト指向を置き換えながら、より使いやすいツール、インフラに置き換えていってるというアナウンスが効いて、海の向こうでは思ったよりコミュニティが発達していってる。
LLはCライクなLLという意味で、MLは思い違いをしてた。 Hindley/Milner 型の形システムを持った言語族というつもりだった。
>>442 DSSSLが使われてた時代なんて有ったか?
DSSSLのまともな処理系ってJADEくらいだろ。
実質的に一択な状況じゃ標準化の意味ないよな。
そんでもってテンプレートエンジンでJadeって名前のが出てきてキレそうになった。
http://jade-lang.com/ 全く違う分野ならともかくなんとも微妙なところでかぶせてきてるのがいやらしい。
>>446 新参者めw
古くからLinuxを触ってきた人であれば、
Linux JF文書のお世話になったことは、一度ならずともあるだろう
http://linuxjf.sourceforge.jp このJF文書の多くはLinuxdocと呼ばれるSGML形式で書かれている
そして、JF文書の処理には(
>>447 の紹介した)ツール jade が使われ、
そのスタイルシートはDSSSLで記述されている
また、国際標準の文書仕様であるDocBookもV4系まではDSSSLが使われていた
(最近までDSSSLとXSLTが併用されていたが、最新のV5ではXSLTのみに切り替わった)
DocBookは、GNOMEプロジェクトやPostgreSQLプロジェクトで採用されている
特にPostgreSQLでは、今でもSGML/DSSSL版の(古い)DocBookが現役だ
>>448 しかし、さすがに学校では教えていなかったような気が…
ISLISP処理系作りたいけど日本語の情報少ないな これどれくらいの規模なんだろ
racketよく知らないんだけどURIエンコードとか文字コードの変換とか自分でしないといけないのか
荒らしに加担するのはいやずら
>>452 Racket には iconv ライブラリが入ってたはず。
455 :
デフォルトの名無しさん :2013/11/12(火) 08:54:37.05
>>450 普及度に比して考えるとISLISPの日本語情報はむしろ多い印象がある。
規格もJISになってるから日本語で読めるし。
JIS X 3012
kikakurui.com/x3/X3012-1998-01.html
ISLISP関連の日本語論文
www.islisp.org/jp/paper-list-jp.html
TISL(ソースが公開されている処理系の一つ)
www.ito.ecei.tohoku.ac.jp/TISL/
ISLISP リファレンス
www.ito.ecei.tohoku.ac.jp/TISL/doc/ISLISP/index_j.html
最後のはリンク切れまくりだけど、URLを、パス先頭のディレクトリが ~izumi/ ではなく TISL/ となるよう書き換えれば取得できた。(あるいはbase要素を削除)。
>>455 JISは100ページくらいのペラい冊子なのに5000円もするんだよな
協賛金みたいなのがのっけられてるんだろう
>>455 ありがとう
最後のページのリンク切れは初めてみたときガックリしたけどそんな場所にあったのか
islispだとレキシカル変数のバインドにはlet、 ダイナミック変数のバインドにはdynamic-letを使うみたいだけどなんで分けたんだろうか?
スレ違いの可能性が高いけど、 色々な言語のモジュールシステムを比較したサイトってどっかに無い?
最近はあんまり言語比較は流行ってない気がする
>>459 役割が違うんだから、むしろ一緒にする理由の方が希薄な気がする。
letを使うマクロとかがあったらletとlet-dynamicで分かれてたら不便じゃね
もともとCL以前は文法分かれてたんじゃなかったっけ?
d-letでいいのになぜなの ギャバンダイナミックみたいじゃない
ISLispの参考書って出版されてる?
def define defun defn 統一してくれ…
名前を統一ってこと? 微妙に意味というか名前の扱いのモデルが違うからそう簡単な話じゃないよね。
declareってあの位置にあるのが違和感あるんだけど なんで引数の位置にしないの あとエクレアみたいなんだけど
Lispは実用じゃないらしい
ゴルァー 江添ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 奴はエウ゛ァンジェリストを気取ってる向きもあるからときどきそういうことを言うんだよ… 言語が実用的かどうかは置くとして、 事実として C++ に比べれば実用されてないからなぁ。 C++er の言い分としちゃそうなるのはわかなくもない。 でもそれでいいんだよ。 使い手が少ない方がいいこともあるって話はグレアムも言ってるじゃん。
否定はしないけどアプリとか書いてない人に言われるとモヤっとするものが
C++とは未来へと疾走し、LISPは過去へと疾走する。
使い手の多いPythonはライブラリが充実しまくり
>>473 彼もアプリを全く書いてないわけではないよ。
とは言え 2006 年頃の話だから C++03 で書いてたのかな。
というか当時はそんなに C++ 規格に傾倒している風ではなかったので、
あまり強く規格を意識してなかったかもしれないな。
彼が blogger にブログを移転する前の話なんで、
当時のブログ記事も残ってなくてどういう形で C++ に接していたのかは、
今となっては今一とくわからない。
納品されるソースファイルの言語そのものが C++ だから C++ は実用的だ という意味なら、確かにC++は実用的 コードを生成する言語を実用的な言語と言うなら、schemeでC++のコードを生成している俺にとっては schemeが一番実用的 現実の世界で動いているプログラムのソースファイルの量が多い言語を実用的と言うなら、一番実用的なのはアセンブラ
>>477 基本的にはプログラマが直接書くもののことを言うのが筋なんじゃないの。
かつて実用的な言語だったLisp
かつて実用的だったものがそうじゃなくなるなんて不自然だろう。 実用的なものが増えたって話じゃないの。
例えば、一人で50人以上の規模のソフト会社に生産量で対抗しようと思ったら lispしか選択肢がないのは確か
一人で頑張れー
>>480 今は、ライブラリは言語の一部だから、社会の活動でブランクがあるとライブラリの鮮度(流行りのインターフェイスやハード対応)が落ちて実用的でなくなる
使用者がなくなって語彙が現代に追いつかなくなったラテン語が実用的でないのと一緒
ライブラリの差はあるよな。 言語は道具でしかなくて、 何かやりたいことを実現するための手段でしかないから、 なるべくなら書かずに済めばそれがいちばん良い。 Lisp はライブラリを抽象化する道具も提供してはいるんだけど、 派生言語の多さとかもあって今の Ruby や Perl ほど膨大なライブラリが集まってないのは確かだと思う。 そういう意味じゃ Clojure は将来性あるんじゃね。 つってもベースになる Java もちょっと落ち目かな?
>>484 clojureはJVMの仕様で末尾再帰最適化がなくて、再帰で頭使う必要があって、set!が使えないので、javaとセットじゃないとつらい
>>485 > clojureはJVMの仕様で末尾再帰最適化がなくて、
知らなかった。
これって、scala とかもそうなの?
scala も clojure も、よく知らないんだけど。
clojureはloop/recurマクロで末尾再帰をする scalaは相互再帰とかじゃなければ最適化してくれたと思う
Scala は末尾再帰最適化があるよ。
でもググると Clojure は JVM の仕様により末尾再帰最適化ができないっていう記述がけっこうあるね
気になったので調べてみた。 「Scala 逆引きレシピ」っていう本に「現在の Scala の末尾再帰による最適化は、Java VM の制約により制限されたものになっています。 末尾再帰による最適化を期待する場合は、@tailrec アノテーションを付与すると良いでしょう。 最適化できない場合は、コンパイルエラーになります」って書いてあった。
491 :
デフォルトの名無しさん :2013/11/16(土) 10:51:31.60
江添自体非実用非生産的
お前は実用的なのかよ
再帰するときに頭使って言語依存のトリック多用するのは好きじゃないのは俺だけか…
人型汎用決戦兵器
まあ、真のLisperに括弧は見えないから問題ないな。
それは俗世で生きていくには色々と辛そうだな
日常生活においても括弧そのものの存在を忘れてしまっていたりしたら怖い なんだっけ? 弓の名人があまりにすごくなりすぎて弓のこと忘れちゃう小説 あったよね
カッコは自動で閉じてくれるから、カッコの多さそのものは問題ない 問題なのは、lisp方言ごとにカッコのルールが違うこと コードのトランスレートがめんどい
>>500 面白かった、リンクサンクス。中島敦凄いな。
>>501 Scheme は比較的積極的に括弧を使う感じだけど arc や clojure は括弧少なめな感じかな。
ロックンロール・ウィドウ♪
>>500 うん 面白かった
話にひきこまれて、括弧の読み仮名のウザさを忘れてた
>>500 これおじいちゃん単にボケが始まっただけでしょう。
>>506 いやいや、そう読んだら元も子もないだろ
君達はまだ本当のボケを知らない
mecab cabocha をGaucheのffiから使うとかいうのあったけど 入出力がテキストなんだから systemコマンドからシェルとして実行すれば十分だったんじゃないの? ffiでないと取れない情報って何かあった?
和田先生といえば スケバン刑事
和田の話は出すな。また荒らされるぞ。
最近、純粋関数型言語系の人がDSLには純粋関数型言語が向いてると言ってるのをよく見るけど。 構文抽象+言語の全要素使用可能のLispに勝てるつもりなのだろうか。 存在自体を忘れられる気もするけど。
lispを関数型と呼んだり、マクロを構文抽象とか呼ぶのは違和感がある 俺には、lispは、実行時型推論でデータ抽象をするカッコの多いC言語に見える
カッコいい言語、それが LISP だ。
Lispで肝心なのは、自前のデータ形式(リスト)で、プログラム自体が出来てる事でしょ。 プログラミングとメタプログラミング、データとプログラムが同一。それがLisp。
>>512 まえに聞いた時は、
S式だと後置のパイプラインやらメソッドチェーン的なものが表現しにくい点
型チェックもマイナーだし閉じたものではないが実装あるんだが、静的動的型チェックで良く上がる実行時型チェックだと型エラーがという点
ぐらい聞いた。
可変とい点もいわれることあるけど、これも実装に寄るが。
Lisp って幅広いだろ。 色んなのがあるだろ。 「Lisp は」って言い始めたらふんわりした曖昧模糊な話しか出来なくない? 観念的なことは所詮は主観だしさ。 もうちょっと具体的に書いて欲しいな。
うむ。Lispとは「道(TAO)」である。
S式同士だとガワが違うだけで、相互の変換も容易だから、LispはLispじゃないかな。 ライブラリレベルであらゆる言語の要素を組み込めるしな。 Lispは自分の望む言語を作るためのメタ言語。当初の言語仕様とか飾りですよ。
そういうの見たら発作起こすからやめてほしい
524 :
デフォルトの名無しさん :2013/11/25(月) 20:48:23.26
圏論の資料はすごかったが自然変換という語彙を定義する前に使ってたり別の意味でも面白い
突っ走ってもらいたい
Lispを学ぶために京大に行くのか、Lispを広めるために東大に行くのか興味ある。
LispをやりにMITに… そういう時代じゃないのかな。
DDI (どうでもいい)
KDDI(かなりどうでもいい)
どうして数学とか物理の人は日常ではあまり使わない「高々xxである」みたいな表現を使うんだ? オッカムの剃刀の理屈で言えば真っ先に削除する要らない言葉じゃないか。 それとも何かルールがあって付けてるのか?
お前にとって要るか要らないかなんてどうでもいい。
格好付けたいお年頃
もともとはなんかの邦訳の真似だろうなと思ってる
> オッカムの剃刀の理屈で言えば 意味を自分で調べて雑談スレにでも報告してくれや
>>530 が思っているらしい意味で言うと
「オッカムの剃刀の理屈」ってのも削除しないとなw
>>530 その意見に賛成!
日本は今すぐ日本語を廃止し、歴史的経緯を無視して単語当たりの情報量が高い中国語を採用すべきだと思う
スレ違いだからいい加減にしろ
宇宙はLispで作られているのを考慮に入れると 全くスレ違いではない
神様はPerlだって言ってなかったっけ。
日本の公用語をLispにしてやる!
実用的なLISPって作られないの?
実用的かどうかはどっちかっていうとライブラリが充実してるかによるんじゃね?
普通に実用してる。 趣味プログラマだからそれほど過酷に使ってるわけじゃないけど。
SRFI の中でこれは仕様に取り込んでもいいんじゃないかと思うのって有る? 細かいところは多少の修正をする前提で、コンセプトが有りだと思えるようなの。
>>542 lisp系使ってるのは大学の研究室だけかと思ってたけど、たまにlispで業務インフラとかサーバー運用してる企業があるから気を付けろ
業務系だと Clojure は割と相性が良いと思う。
>>545 stream は欲しいかも。
stream が基礎にあれば数列を扱うのがすごい楽になる。
この上に構築できるものは多いと思う。
それと正規表現。
主要なスクリプト言語で正規表現をサポートしてないものなんてそうそうないし、
いまどきのプログラミング言語にそれくらい有って当然みたいなイメージがある。
srfi-115 が登場するまで提案されなかったっていうのがちょっと意外な感じがする。
だけど文字セットや文字列ポートについての仕様とも関係してくるので、
そちらがきちんと確定しないと難しいかもしれない。
あとは現在の Scheme の上でユーザが組み立てることが出来ないスレッドやソケットまわり。
今の時代は最小webサーバーコンテナも標準ライブラリに入れるべきだと思う
posix
ソケットはともかくスレッドは鬼門だよなぁ。 OSやCPUの影響を受けるし 継続や dynamic-wind の意味論がどうなるのかとか マクロ展開中のスレッドはどう振舞うのかとか 色んな方向に話が発展するし。
巨大言語のC++にない機能は増やさなくて良いだろうな。
もうSCHEMEはリスト操作が出来るだけのおもちゃでいいよ 実用はCLでやろうぜ。
>>542 なにを持って実用なのかは置いておいて。
ログ解析みたいな処理はGaucheとかでも十分な気がするし、自分でも実用してる。
ただ、他の言語に比べてJSONが扱いずらいとは感じる。
JSON を使うために何が不足してると思う?
あれ書いたころはそんなにサッカーやってなかったんじゃない? あるとすれば改訂版の加筆部分。
C++っていまどきの言語に比べると もう小さいだろ
言語そのものは巨大すぎ。ライブラリは足りないけど。
大きくないだろ 仕様書で400Pくらいしかないぞ
もう仕事じゃ使わないよねC++ JavaとかC#とかいろいろ応用が利いたというか、勉強しておいてよかったけど
誰かscmxlateの使い方を日本語で解説してくんないのかな
オッカムの剃刀の話は 優生学が嘘という話と直結してますからなあ
某エントリを見つつ、グレアムの簡潔さが力というよりも、概念を非本質的なコードを分離して記述できるのが力とするのはどうだろうか。 そのためには言語自体の機能さえ変えれるのが望ましい。最適なパラダイムとその詳細は問題領域によって異なる。
Lisp は神の言語だけど Scheme は紙の言語
CLをLispと略すのやめれ
>>570 Schemeはペーパーだけどarcはベーパーウェア
うまいこと言ったつもりか
scheme の時代が来る前に、clojure の時代が来そうだな
Clojure は Java の蓄積をうまく使える点で技術に明くない人を説得しやすいというのはあると思う
にゃんぱすー
Clojure メインの会社ってどの程度あるものなのん?
Clojureをコアに運用してる会社は小規模だとおもうし、日本では明言してる2,3社だけなんじゃないかな。 ある程度大きい会社で運用で使おうとしてる開発者もいるみたいだが。 海外をみると、データ解析のREPLやDSLで利用したり、REST APIまわりで使ってる会社もあるみたい。
つか、発注元がclojureで納品しろと言ったときに、それを断る会社の方が少ないと思うのは俺だけか
ハチミツとClojure
おっさん乙
ごClojureった
Clojureは買ってでもしね
ERR: value expected : (open result-file "write") called from user defined function eval-template-to-file called from user defined function generate-front-page
エラメで気付いたから、まともに動いてる所を見てない。
Lisp Advent Calendarなんてあったのか 意外といるもんだな書く奴w
突然であれなんだけど Reader macro と Read macro って どっちが正解なの?それとも何か区別して使ってるの?
公式規格にないMOPが実質標準になってるのは、言語実装のレベルでいじれる事で、より高度な抽象化を目指すためのこだわりに思える。 マクロを書かないのは、関数を書かずにコードが重複して書いてあると喜ぶようなものではなかろうか。 他の言語がASTマクロを導入しようと、それは他の部分との接合が悪く、非本質的なコードを欲求される使い辛いもの、 あるいはコンパイル時内部埋め込みLisp方言になるのではなかろうか。 複数の言語を接合して作られるプロダクトがあるが、LispマクロのS式抽象が相互の変換でも勝るのではなかろうか。
で、お前らLispで何作ったの
普通にWebサーバで使ってるよ
ダウンローダーみたいなのを作って使ったりしてる
個人用ツールから同人レベルくらいのものまでは普通に作ってるな。 ライブラリも便利レベルは少ないけど、基本的なものは揃ってるし、コードが圧縮できて良い。
597 :
デフォルトの名無しさん :2013/12/13(金) 20:49:53.62
>>592 昔CADアプリ作った。
お金がもらえるモノはそれぐらいか。
自分はLispで作ったものの数よりLispを作った数の方が多いな
599 :
デフォルトの名無しさん :2013/12/13(金) 21:44:15.99
AutocadでVBA使えるようになったときは世界中が喜んでたよね。 それまでLispだったから。
オブジェクトストアやサーバーは、もともと得意分野だったんじゃねーの
規模の問題かわからないけど、LAMPやjavaみたいに商用ベンダーがオープンにして稼ぐ路線にはならず商圏は広くなかったようだが。
インテリジェントプログラミングといえばlisp一択だったのに…
Lisperのブログとかって不満ばかり書かれてて こうだからLispはすごい、使ったほうがいいみたいなの少なくない? 普及させる気あるの?
自分で処理系作れるんだから、そもそも普及させて他人の力を借りる必要がない
布教周りはClojureユーザさんがなんとかしてくれると思う(他力本願
下手に広めたりするとSICPスレの不毛な荒しみたいなのが 沢山湧いて、うんざりするはめになるに違いない。
普及させる理由もないしなー。
>>604 そういう印象を受けたことはないな。
ただ、わざわざブログに書くときっていうのは話のネタになるときだから、
使ってて問題になったところをテーマにするというのは不自然ではないと思う。
「schemeだとマクロと継続の話が多い」みたいに言う人がいるのも同じ理屈。
他のところは特にひっかかるところがない。
実用的にはそれほど使わないところに問題が集中しているならそれは良いことだと思う。
本当に素晴らしいモノは誰にも教えません
神秘は秘匿によって神秘たりえるって橙子さんが言ってた。
lispは素晴らしい言語だが、 1. ライブラリがそれ程充実してない 2. 特にGUI周りが弱い 3. 普通の人はあんなに括弧が多いと引く 4. 言語が柔軟過ぎて、大人数のプロジェクトに向かない? 5. だけど使っている人は自力でなんとか出来る人が多くて、あまり問題にならない まあ、流行らなくてもあんまり困らないしな、と思う のスパイラルで、あまり状況が変わることはないんじゃないか
6. 開発環境が限定されてる
schemeなら継続でGUIまわりは強いんじゃないの 問題は結局ライブラリが無いことだが 他人の自慰で作られたサポ期間も不明なラッパーとか使ってらんねーし
FFI があればそれほど問題にならないような気もする。 C 世界のライブラリを経由すると継続が途切れるような実装もあるので、 GUI を Lisp に馴染ませるなら CLOS (等のオブジェクトシステム) を活用するのが自然じゃないか。 その場しのぎでも割と使えるし。
そういやUNIX界隈のGUIってどうなってんのかな GUIシステム自体が糞でやっぱ恐ろしいことになってんのかな
GUIなんて無かった 会社の規約でシェルぐらいしか使えんけどやっぱ遅っそいな そんなゴミみたいなコードに対してドキュメント作る毎日だけど LISPより使われてるという なぜなのか
おまえらの文章って括弧がないとよくわかんないな・・・
たまには Interlisp-D のことも思い出してあげてください。
思い出す前に知らんがな
>>616 やっぱgtkじゃね?
Qtはデザインの概念がウェブに似てる感じで個人的には好きだけど。
GLUTでしょ…
GUI部分は単調で面白くないので、放置されがちだな。 UNIX系のGUIが糞なのは、たぶん作者自体もあまり使わないから。 開発環境はマクロでコードが短いので必要ないが近い。 言語の力が足りないと開発環境の力が必要になる。 有名所でもvimでない素のviらしいからな。
グレアムが言ってたな。 開発環境に頼らなければならないのは言語が弱い証拠ってのは。 だからグレアムの書くコードは短めの名前を使いがちで書く方の都合でやってるから読み難くなる。 俺としちゃ開発環境を全部ひっくるめて評価しないと意味ないと思うな。 vi しか無い世界でならそこで最高のパフォーマンスを発揮できる言語は何かという評価指標は妥当だろうけど、 現実に vi 以外の選択肢は有るんだし、あえて「弱い開発環境」を使うのはナンセンスだろ。 強い言語があって強い開発環境も有ればそれが最強じゃん。
グレアムのコードが読みづらいと思った事はないな。 余計なコードが付随する他の言語より非常に読みやすい。 最強の開発環境と言われても、言語と機能がダブるだけで、使いやすさは変わらん。 それに気になる部分があるなら、自分で書けば良いだけだしな。
信仰告白はもういいです
eclipseなしのjavaは耐えられないが、C言語はemacsの方がはかどる。
開発環境に頼らなければならない言語が弱いのなら 括弧に対応したエディタに頼らないといけないlispは弱い
括弧対応なしのエディタでLispを書くのが好きな人も居てな。 括弧の対応が分からなくなるのは、部品が長過ぎる可能性がある。 あと括弧対応はどのエディタにもほぼ確実についてるのに、 Lispだと使わない自称便利な機能は糞重くて改造も不便でGUIでしか使えない環境にしかついてないんだ。
ambはschemeの暗部
それでうまいこと言ったつもりcar
cdrない
このスレcurry臭がする
LISPってRubyみたいにメタプログラミングとかできるの?
マクロあるだろ。
RubyってLISPみたいにメタプログラミングとかできるの?と聞くべきだったかもしれない
メタァ
コードの意味が提示されていないとデータとプログラムの構造が区別できないから、むしろメタプログラミングしかできないのがLISPとも言える
Common LispにはpythonとRを利用できるパッケージあるのだから Schemeにも欲しい
ffiがあればなんでも出来るぅ!
はんでメタメタごっちょでごいす
CUDAで高速動作するSchemeってないですか?
ISLISPはたまに話題になるけどEuLispはどうなん? (日本では)ユーザーはそんなにいないのん?
>>642 schemeでcコンパイラ作ったことがあるから、それをちょっと工夫すればできそうな気がする
有名どころのLISPってどんなのがあるんだ。 俺俺LISPを出すときりがないからとりあえず実装が3つくらいはあるものっていう前提で。
Common Lisp Scheme
Emacs Lisp
Clojure
arc
>実装が3つくらいはあるもの
clojure, shenは、下位レイヤーが三種類以上あるって感じだな。
Cで作ったDLLに組み込めるscheme探してんだけど細かいとこで条件合わん… 自作のは動作も性能もションボリで続ける気なくしかけ そもそもDLL部分の行数はそんなにないのに規格準拠度の低い俺俺scheme作んのもなんだし… static linkできて外部ファイルが不要or少なくてバイトコード出力できるのない?
よくわからんが 組み込み用ならGuileじゃないの?
make に入ったりして実績はあるけど、ちょっとデカくね? tiny-scheme あたりの小さい処理系をカスタマイズする方がいいと思う。 これも gimp に入ってたりするから実績はある。
バイトコード出力がガンだな。 マクロ展開の結果にはどんなデータも入りうるので、 ファイルに出力するのはとてもめんどくさい。 何をしたいのかわからんが、 単にユーザに scheme スクリプト見られたくないという理由なら、 適当な処理系の reader に細工するのがいいんじゃないか。
>>653-655 レスthxです
作ろうと思っているのはとあるスクリプトプレイヤー用のプラグインで、
利用者はDLLとスクリプトをpackして公開することになる
要SLIB、とかになると利用者に負担かかるし、俺も使いたくない;;
(使ってくれる人が最小で“DLL一個とスクリプト一個”から公開できるのが理想)
Guileは“コア部分はCで実装、機能とかはスクリプトで”みたいな方針ぽいので検討の段階で外してた
TinySchemeは日本語が弱そうなイメージがあるけどどうなんでしょ
バイトコードの意図はまあ>655さんの言うとおりで、
DLL利用者がスクリプトを隠蔽したいかどうかで任意に決められるようにしたかったもの
自前でDLL-処理系間に簡単な暗号化を挟むくらいはヘボの俺でもできるので、
バイトコード出力できない処理系ならそうしてみる
なんか色々後だし情報が多くて申し訳ないです
>>654 あれっ?
gimpって前はscm使ってなかったっけ?
lispの類いは自分で書いたのを埋め込むのが一番楽で面倒がなかったりする。
そうだそうだ。自分で作った scheme が一番可愛い。 そのうち直そうと自分で言い訳しながら、継続やマクロがちゃんと動かないのもお約束だよ
>>659 規格満たさないschemeってschemeじゃないと思うなー
オレLispなら何でもアリだけど、規格物はちゃんと条件満たさないと
>>659 自分で作ったものに愛着がある (可愛い) のはわかるけど、
>>658 が言っているのは「自分が作ったものはよく理解しているので扱い易い」というような意味で、
愛着とは別の話じゃないの。
自分自身は自分が作ったものに愛着があるから不具合があっても許せるのかもしれないけど、
>>656 のような用途だと自分だけが使うわけじゃないから、完璧ではなくてもほどほどには動かないと困る。
あるいは将来的にほどほどに動く見込みがないと困る。
自分で作るとコントロールしやすいというのも、コントロールしやすいからベストだということになるわけじゃない。
コントロールしやすさに対して言語処理系としての完成度だとか手間だとかいったトレードオフがある。
schemeの末尾再帰をCコードに変換したいのだが 要するにトランスレーターを作りたいのだが できれば継続も再現できるといいのだが 要するに末尾コンテキストをうまいこと1個下げればいいわけだよな スタックをmemcpyとかなのかな クロージャはどうしようもないからヒープかな
CでSchemeコンパイラ作る方が早いと思う
lispのcトランスレータって生成されるコードはどんな形してるの? スタックマシンみたいな感じで書かれてるのか lispの関数定義はそのままCの関数定義で書かれてるのかとか
>>664 lispの関数は、関数全体をS式を表現する構造体で表現するのが普通かと
じゃあCに変換したらS式を表現する構造体も組み込まれてかなり冗長なコードになるのか 思ってたのと違う
>>666 実はevalを高速実行する技術がいろいろありまして…
>>665 は全然トランスレートできてないしただの俄か
>>667 も同じやつかevalがどうしたって?
まあとりあえずSchemeコンパイラについて調べてみるといいんじゃないかな RABBITからStalinまでいろいろあるけど
インタープリタならともかく、いきなりCのコード吐くschemeコンパイラ書くなんて難いんでないの?
rhizome/pi とか chicken とかは CPS 変換してるっぽい。
>>660 少々のバグがあるのはしゃーない。
でも、バグは仕方ないにしても、実装する気がないのとか明確な制限とかはドキュメント化して欲しいとは思うけど。
SigScheme みたいに第一級継続の扱いに制限があるものでも、
どういう制限があるのかはっきりしてるなら避けりゃいいだけだし、
全体の完成度は Scheme の名を冠しても違和感はない。
ぶっちゃけて言えば第一級継続を必要とするケースなんてそんなにないしな。
chicken使ってるけど特殊操作がついてる、ただのCマクロという印象。 単純化すると、あとはCPS変換(継続と末尾再帰)して、CスタックをGCに利用して、scheme型のタグがついてるくらいかな。 objCやgtkみたいなもの。
Lispがラムダ関数だから関数型というのは分かるけど、 純粋関数型言語の理論背景の関数って具体的に何なのだろ。 数学の関数定義に内部変数を使用しても合法に見えるのだけど。
Schemeって何がいいの? CLの処理系と比べると実行速度がだいたい遅いし、 実装上の性能を別にしてもSRFI全部を足し合わせてもも全然機能が足りないからRubyとかの方が断然使い安くて素直だし、 中途半端感が半端ないんだけど。
関数名がCLよりまとも
>>676 純粋関数型言語って内部変数も禁止されてないか?
>>679 それはトレードオフがあるだろ。
全部同じような括弧で表すのはある意味では一貫性があって綺麗だけど、
マクロ (構文) の使用と関数呼出しが同じような見た目っていうのを「スマート」って言うのなら、
スマートであることはデメリットでもある。
>>680 Haskell で let や where を使うってのは内部変数とは言わないのか?
Scheme覚えるぐらいのわずかな手間でブツクサ言う奴かどうかを見ている
>>681 「データとプログラムが同一」ということについてschemeはlispよりも一貫している
という点がスマート
schemeの人は実装依存をバリバリ使うので機能は足りる。 シンプルで直交してて美しい。CL処理系よりかなり小さい。
>>682 あ、すまん、再代入の話。(変化しないのに変数と命名も妙だが)
>>680 値がどこでどう変更されるか分からないことを怖がるなら、むしろグローバル変数を問題にすべきではないかと
ぶっちゃけると、大学で教えるときはschemeじゃないと無理 「来週までにテキスト100ページ読んできて」とか言える大学じゃない限り、lispを教えるのは不可能
>>677 Scheme の出自としては制御を第一級継続 (の前身であるアクタ) の概念で定義できるのではないかというところから始まってる。
http://ja.wikipedia.org/wiki/Scheme#.E6.A6.82.E8.A6.81 だから強いて言うなら継続を基礎としてフォーマルな意味論を付けられていることが Scheme の利点と言えば利点なんじゃないかな。
数学なんかでも 1+1=2 を自明なものとしてではなくより根源的な概念の上に定義しようとしたりしてるでしょ。
物理でも原子こそが最小の要素と言ってたところから、それの構成要素である原子核と電子、
更には陽子と中性子という構成要素を見付けたと思ったら今度は素粒子とか言ってる。
もちろん構成要素が何かにかかわらず原子は原子なのだし、
原子ベースで構築された理論が大幅に変わったりもしないわけだけど、
理論的裏付けがあるとその上に載せるものがどうあるべきかが自然にわかってくる。
>>686 間違えた、式で定義すれば変数と言っていいわ。
ただ関数定義の内部で再代入できない理由がよく分からない。
変化させて集めるタイプの数学的定義は直接書いちゃいかんの?
wikipediaの純粋関数型言語で、遅延評価が要素に入ってるのも分からない。
数学に関係ないし、昔は先行評価のOCamlも純粋関数型言語扱いだったのに。
純粋関数型言語の数学的基礎って、Lisp族よりしっかりしてるの?
>>690 プログラムをどんな大きさでブラックボックス化しても、調べるまでもなく値に一貫性があるというのが利点なんだから
>>677 >>689 つけ加えると直交したプリミティブは任意の置き換えが可能になる。
継続は様々な制御構造などの基盤になり、それらの書き変えを可能にする。
人数多いなw
>>691 プログラム上の都合のために、数学的基礎を制限したの?
>>690 > wikipediaの純粋関数型言語で、遅延評価が要素に入ってるのも分からない。
> 数学に関係ないし、昔は先行評価のOCamlも純粋関数型言語扱いだったのに。
Wikipedia の記事を見たら「多くの純粋関数型言語は」となってる。
必須要件というわけではないんじゃね。
純粋関数型言語のトレンドってことだと思う。
もしかすると遅延評価の方が純粋関数型にしやすい何らかの要素があるくらいの意味かな?
>>693 逆だよ
数学的表現でそのままコーディングできるのが純粋関数型言語
僕はScheme嫌いなんだよね、泥臭い所(現実の問題を解決するのに必要な部分が実装依存とかいう部分)を避けて規格を作ったせいで各Scheme実装毎の違いがあって何かのアプリケーションを書く時にオレオレScheme毎に違いが出過ぎちゃうのが駄目。 Schemeの定義が実際の業務じゃなくて学術向けの定義までしかしてないからなんだろうけど。 学問的には綺麗だけど世の中のアプリケーション書く時に同じレベル(RnRS)でも同じコード動かないとか。 ここら辺なんとかならんものなん?
数学的表現を基準にするなら無限の大きさの配列を (全ての場合ではないが) 表現しうるという点で遅延評価に利点があるな。
>>694 下のリストで遅延評価でない言語が非純粋扱いされてる。
>>695 だとすると内部変数を書き変える定義はできませんという条件が数学にあるの?
ラムダ関数や形式意味論の方がよほど数学してるような。
どうせ掛け算とかが任意の桁数を扱えるようになってるんだから、 実数の精度とかも任意に変えられるようにするべきだよな。
>>696 その意見には同意。
Schemeの仕様が簡潔とか素直とか綺麗とかいうのは、簡潔で素直で綺麗になった部分だけを書いてるからで、
議論途中のものとかまだ俎上に上がってないものとかが無数にある。
ただ、様々な実装が出てくる中で実用を通して必要なことや問題点をあらい出していこうという価値観もあるみたいで、
そこはむしろ実用指向なんだよね。
今この時点で実用できるものじゃなくて、将来にわたっても実用できるものって感じで遅々としてはいるけど。
処理系の実装が簡単すぎるのが悪い
>>698 ラムダ関数や形式意味論って、内部変数を書き変える定義もあるの?
>>696 「現実の問題を解決するのに必要な部分が実装依存」って機械語以外全部なんじゃ…
>>703 Lispやschemeは数学的基礎をはっきりさせてるという話。
ラムダ関数はそれだけでチューリング完全なので、定義できるはず。
>>705 λ関数の変数代入とlispの変数代入ってセマンティクスが違くね?
>>706 あー、ただの糖衣構文とみなせるけど、ラムダ関数の変数と別の変数概念になるのか。
それでもラムダ関数が基礎にある事は変わらないし、数学の関数の定義では内部に条件がないというのも変わらんが。
計算モデルは違うと思う。 代入というよりシャドウじゃないの。 代入で表されているところを変形してシャドウに変えられる (というかα変換すれば新しい変数ってことになる) 場合というのは有り得ると思うけど、 それは状態として持っていたものを陽な変数としてくくり出すってことだし、結局は関数内部で状態をもたないことになるはず。
別の言い方をすると、純粋関数型の数学的基盤が分からない。 数学より制限しているならば、制限関数型と呼ぶべきではないか。
>>709 俺には状態を持ってはいけないように読める。
状態が在っても無くても表現できるものは変わらないんだから 数学的には何も制限されてないんじゃないの?
ここで頓珍漢な議論するより、プログラム意味論とかの本読んだ方が早いで。
>>709 そもそも数学には「入力」や「出力」なんて概念はない
ドメインとコドメインの関係が関数
ドメインにテンポラルな集合(時間)を加えたときの関係を入力出力と表現してるだけ
数学的には、入力や出力という概念を持ってる方が不必要な制限がついている
「状態」は、関係にテンポラルな集合を入れて分解するときにはじめて見えてくる概念
その意味で「状態」は不純
>>712 状態がある事で新しく表現できるようになるモノは「時間」
時間なんて所詮は1パラメータ変換群でしょう? そんなもの静的に表現できますよ
すると状態を使用する事も使用しない事も選べるのと、状態を使用してはいけないのと、どちらが数学的な関数に近いのか。
HaskellもSTモナドとか使えば内部状態をエミュレートできるんじゃなかったっけ?
>>712 状態を入れると「すべてのパラメータ」に時間の概念が入る
>>718 どっちも数学的表現は可能
ただし、状態を入れる場合は、各項に「ステップt」という余計な表記が必要になる
つまり、パラメータに時間の概念を入れたり入れなかったりを 選択できる純粋関数型のほうが色々選べるってことか!
グローバル変数全てをパラメータとして持てば関数型ってことですね わかりました
>>719 そう。 それ。 状態を変数にくくり出した上でモナドで隠蔽したりする。
そういった風に表現方法を変更する (というか無視する?) ことがアリで「等価」なので
>>705 が言うチューリング完全であるということを根拠に内部変数を書き換えられるなんてことにはならない。
内部変数を書き換えるのと等価な内部変数を書き換えない処理を書けるかもしれないんだから。
>>721 内部の状態をあらわすのに関数定義の内部の各項で「ステップt」という表記が必要という意味?
純粋関数型に「ステップt」表現はあるの?STモナドという迂遠な概念は必要なの?
>>722 純粋な関数型はどっちでも、数学の論文に書くときの表現とコード上の表現が同じ
再代入がある言語は、コード上の表現は a=b でも、数学の論文に書くときの表現が a_t = b になるってこと
そもそもLISPを使うのに数学的背景とか理解してなくてもいいだろ。 知ってるに越したことはないけど知らなくても知らないなりで使える。 おまいら日本語の文法とかそんなに考えて話してるか?
>>723 変数にパラメータがついてて、プログラムのどこかで代入が行われるたびにそのパラメータが1加算されるなら純粋関数型
>>725 再代入OKの言語では、内部の状態を「数学的にあらわすとき」に関数定義の内部の各項で「コード上にないはずの」「ステップt」という表記が必要という意味
純粋関数型も「ステップt」を表現してもいいけど、そのときにはコード上にも数学的表現の上にも陽に「ステップt」が出てくる
STモナドは状態というよりも参照を抽象化した概念の気がしないでもない
>>726 STモナドは表記ちがうような。モナドは圏論だし関数でなく圏論型言語なのでは。
>>728 するとOCamlは純粋関数型?wikipediaの間違い?
結局、数学の論文上の表記に似せた言語という意味なの?
それなら数学表現型言語と呼ぶべきなような。
>>731 「関数」の意味が違うだけ
基礎数学での関数が <x, fx> の一意な対応で定義されてて、それを純粋と呼んでるだけ
だから、本来なら言語の種類を分けるんじゃなくて、各言語の中で代入の種類と関数の種類を分けるべきだった
何だよ基礎数学って? 純粋数学のことかよって突っ込みたくなる。
>>732 基礎数学?(検索で出ないけど基礎論?)という分野の関数を純粋と呼称してるだけと。
それでも内部の状態は持てても良さそうなので、ステップt記法を言語に導入し、状態はただの表記差でどちらも使用して良いとなりそうです。
関数型や純粋はあまり良い表現ではなさそうですね。
引数適用型パラダイムとでも言った方が良さそう。 (作用型言語と呼び方もあるらしい?けど分かりにくい)
>>733 数学を構築する際にその基礎となることを研究するための数学
系の公理的定義を議論するのはこの分野
状態否定型パラダイム(言語ではない)の方が良いのかな? 732さん、長々とありがとうございました。
数学基礎論のこと言ってるのか。
>>734 というか、再代入を使う言語は、変数を宣言した時点で、すでにステップtで表現できる状態を内部に持っていて、それはコード上はプログラマからも隠されている
プログラムのどこかで代入が行われるたびにステップを加算されるので、ただの表記差の問題とは断言できない
Haskellが良いとされてるのは、関数が純粋だからじゃなくて、純粋な部分とそうでない部分をきちんと分けることができるから
変態言語Lispでも簡単にDSLとして組めるけど、タイプ数が増えるし使わないな。 ○○言語のこの機能が素晴しいが、簡単にマクロで組める世界。 抽象構文木を直接簡単に扱えるので、やりたい放題。 マクロもevalもeval-whenもリーダーマクロもあるんだよ。
そろそろタイプ数を気にする時代は終わってると思う
>>741 中身がOCamlで見た目がHaskellな言語が欲しいので
DSLとして組んでください
機能と見た目は違うな。
計算可能性が同じならば、見た目は重要な機能の一部 有限の時間でプログラミングするということを忘れてはいけいない
見た目もS式の方が変換が容易で便利。
純粋関数型なLispにcall/ccを導入するだけで不純になるっていう例をどこかで見た気がするんだけど見付からない。 知ってる人いる?
副作用ではない 主作用だ
Lisp系の問題としてライブラリの少なさやマクロの自由さがよく言われるけど。 実際には実装依存やライブラリの注意点、効率、スレッド、最適化、多言語化、並行、過負荷、スケーラビリティなどの実務部分の情報が少ないことじゃないだろうか。 あとグレアム含めて、エバンジェリストのコード公開が少ないかも。あっても例示のみ、githubでバリバリ公開とかが他言語に比べて少ない。
lisp系の問題はユーザが少ないことだけですよ
githubを見るとLISPも(他よりは少ないにしても)それなりにあったりするんだよな。 ただ、どのLISPを使っているかを見て分類していくとかなり分断されてる。 こういう状況が情報共有を阻んでいるのだと思う。 C++とか環境依存な部分が多いように見えて実質はPOSIX(というかLINUX?)とWindowsを意識してればほとんどカバーできちゃうし、 コンパイラもVisualStudioとGCCとCLANGだけ考えてればだいたい問題ない。 色んな不満がありつつもとりあえずこれ使っておけば行き詰まってもどっかに情報があるだろうという変な安心がある。
わかる
かと言って多様性もLISPの力のひとつだから統合してユーザーが増えるのが良いかというとそうでもないかなって感じだし、 LISPの宿命として受け入れるしかしょうがないんじゃないの。
少し前まではC言語さえ環境依存だらけだったよ。 みんなOS毎のテクニックを憶えて書いてた。 共通化を意識しすぎて、OSや実装固有の情報を軽視しすぎではないだろうか。
C言語そのものは移植性高いだろ。 環境依存の処理を書いていただけで、Cそのものは 生まれからこんにちに至るまで依存は低い。
環境依存の処理なしで、まともなアプリケーションは書けなかったよ。 環境をあまり気にせずに書けるだけのライブラリが揃ったのはここ数年。
だから、それはC言語が環境依存だったんじゃなくて C言語で環境依存のコードを書いたってだけのことだろ。
環境依存のないそれなりの規模のCプログラムなんて見た事ないわー。 基本データ型でさえ機種依存だったのに。autotoolsさえ使ったことなさそう。
だから、それはC言語が環境依存だったんじゃなくて C言語で環境依存のコードを書いたってだけのことだろ。 パーかテメェは
>>759 基本データ型の int は環境によって 16bit だったり 32bit だったりするけど、
そういうレベルの話しているのか?
だとしたらバカだろお前w
規格に大量の機種依存が入ってるんですが。
>int は環境によって 16bit だったり 32bit
「C言語に環境依存の規格を追加したもの」 ≠ 「C言語」 intは「C言語」ではbitサイズは規定していないから それを以って環境依存を論ずることは出来ない。
10年前に大学の卒研でUnix上で書いたコードが、Makefileだけ書きかえれば、Windows8上でコンパイルできて実行もできる C言語だけど感動した
どの言語も、環境依存じゃなくて、言語のバージョン変更や標準ライブラリの変更が問題になるのがほとんどな件
C言語で環境(処理系、機種、OS、ライブラリの差)を考慮せずにプログラムね。 GUIも日本語処理も満足に出来ないか、車輪の再発明だけで終わりそうだな。 GNUツールチェーンも環境依存処理が基盤にあるから使えないな。 あ、konやfb系も駄目だから日本語表示できないわw
C言語はあくまでC言語だ。 ライブラリはライブラリ。 内(C言語そのもの)と外(環境)の切り分けも出来ないのだろうか…
処理系、機種、OS毎の処理が出来ないだけでも、上に書いた全てが出来ないので変わらないです。 C言語の人はみんな環境の差にいかに対応するかに悩んで作るんです。 悩む部分が減ってるのはライブラリやツールの作者がかわりに悩んでくれたからです。 ヘッダファイルの位置さえ違うからな(笑) バカは放置しといて。 日本のLisperは標準規格にこだわりすぎじゃないか? 移植性も考慮するけど、環境依存部分もバリバリ使う、そしてその情報を書く方が良いのでは。
教科書的なお手本コードはよく見るけど、実装依存機能で機械側に降りてバリバリ書くノウハウはあまり見ない。 商売に使うには、そういう機械に近い部分も重要だと思うんだよな。 富豪プログラミングなんて夢で、ハード代でヒィヒィ言ってるわけで。 Lispの長所の一つに機械から遠い部分も近い部分も、簡潔に書ける事があると思うのに、機械よりのノウハウ情報が少ないと思う。
> 処理系、機種、OS毎の処理が出来ないだけでも、上に書いた全てが出来ないので変わらないです。 > C言語の人はみんな環境の差にいかに対応するかに悩んで作るんです。 > 悩む部分が減ってるのはライブラリやツールの作者がかわりに悩んでくれたからです。 > ヘッダファイルの位置さえ違うからな(笑) C言語で規定されていないところで力説してもな。 ズレてんだよ
バカは放置しといてって自己申告してるじゃん
>>772 autotoolsを絶滅させてから言ってくれ
例えば、「C言語で〜」で仕事請け負って、コード見たら、ソースの中に機械語を直接書き込むような変な言語だった場合、詐欺になるの? で、その仕事を完成させたときに、「C言語であれ作りました」と言ったら虚偽になるの?
C言語+処理系定義で調べよう
契約と業界慣習によるが、さすがにインラインアセンブラまででは
昔、関数を func() int a, b; { 本文;} みたいな書き方してたのを思い出した あれ、なんだったんだろう…
K&Rも遠くになりにけり
第一版は実際見たことない
Rはもう死んだしな
>>778 さすがに爺でも、もうそんな書き方しないだろう。
>昔、
javascriptで function func() // コメント { 本文; } と書いて郷愁にふけてる
>>782 本についてるニューラルネットのサンプルコードをダウンロードしたら
>>778 みたいな感じだった
大学の研究室とかではいまだに現役な気がする
ANSI X3.159-1989が24年も前なことに驚いた そりゃ歳もとるはずだわ
今ホームをあさって調べたら、最古のコードがscmファイルでタイムスタンプが1984年だった 大学で受け継いだやつだった
touchしていい?
ライブラリとか言ってる間に書けよ。 ドメインに応じた機能を関数やマクロで用意できるのがLISPなんだろ。
(やれば) できる (作れば) ある
>>789 どのドメインにも(まともに動くかどうかは無関係に)共通した関数やマクロを書けてしまうのがLISP
プロトタイプをサッと書くのには適しているが、ライブラリみたいな頑健性が必要なモノを書くのは難しい
792 :
デフォルトの名無しさん :2013/12/30(月) 19:23:32.61
>>789 そりゃ書けば在るに決まってますがな。
誰が書いても同じようになる部分をすっとばして更にその先へ行くための道具がライブラリだろ。
「作ればあるもん」w
仕事で使うわけでもなし、大手組織の後援があるわけでもなし。 ライブラリの多い言語は、それなりの組織が積極的にサポートしたものばかり。
MSかgoogleの支援が無いとな。
perlは誰がサポートしたん?
perlはオライリーあたりが支援してたかな。 それよりもUnix系のbaseに入れたのが大きいだろうけど。
というか、スクリプトで使ってるうちは、ライブラリの未整備部分はFFIでも速度的には十分な件
clojureが強い最大の理由はSTMでスケーラビリティが高いからじゃないかな。
javaの資産があるしclojure自体もライブラリ多いし つくればあるって言わなくても良いところ
javaの資産といってもCへのffiとそれほど差があるわけではないでしょ。 せいぜいGC関連の手間が減るくらいでは? 企業が採用する時の条件に、高負荷状態での信頼性、スケーラビリティ、並列プログミングの容易さ、 GCの効率やタイミング操作、そういった実装についての情報があるんじゃないかな。 事実かはともかく、RoRはスケールしない、Linuxは高負荷の挙動が怪しい、 これからは並列が重要になるが関数型言語は並列しやすい、などの話はよく出るようだけど。
そこでFreeBSD
セキュリティにしても、例示コードはよく出るけど、個別の事例集が不足。 ライブラリのセキュリティ評価は、多言語処理部分はどの程度信頼できるのか。 ゲームでもハードやメモリなどを直接いじるために、処理系はどういった手段を容易してるのかとか。 特にschemeだと標準準拠を移植性だと思って教科書的過ぎるコードを書くか、 あるいは移植性を無視した実装ベタベタなコードを書く人が多い気がする。 実装依存機能を利用しながらも、うまく隠蔽して移植性を考慮するノウハウとかもっと出て良いと思う。
この処理系のサポートは親切で対応が早いとか、逆に作者がメンテもう無理と叫んでたとか。 ライブラリの作者に気軽に連絡がとれた、コミュニティが初心者にも親切とか。 このライブラリは実質サポート切れ、かわりにこれが使える、メンテナ行方不明とか、そういうのも情報だな。
Javaはもちろん、Haskell だってあっと言う間にライブラリが充実してる。Lisp系で対抗しうるとすれば、Clojure にリソースを集中するしかないのではないだろうか。
CのFFIってクッソ面倒だから 構造体とかマッピングする必要があったりするし
でもなんとなくLISPっていうくくりで見ると Clojure ってちょっと筋が悪い気がするんだわー。 ライブラリっていうか言語仕様そのものも Java に寄生してる感じだしね。
ClojureをLispと呼ぶのはやっぱ違う気がする いい加減スレチっぽいけど
ffiのマッピングはある程度自動化できてるはず。 Cの限定的なパーザ通すだけだからね。 例によって紹介やドキュメントがほとんどないけど。
Clojure は、Lisp として生まれたというより、シンプルさを追求して Lisp を選択した、ってことらしい。そこらへんにlisperが違和感を感じるのかもね。
((((((((((((((((((((あけおめ] javaなんて嫌ですgcc的なLISPがあればいいじゃんと思ったが GNU CLISPはメンテされてそうにないし 天に見放されてるな
まさかLispスレでこんな初歩的な詭弁を見ると思わなかった Lispインタープリタは学生でも作れる→ コンパイラも学生でも作れる Haskellは基礎数学が記述できる → 数学全般もLispより上
>>813 もっと驚きなのは
ベン図かいたらすぐ分るこの詭弁を
Lispや周辺技術に、ある程度詳しい人間がやってたという事
素人が知らないうちに間違ってしまったとかじゃない
815 :
デフォルトの名無しさん :2014/01/01(水) 18:37:22.80
いまどきLispなんて使っているのは 時代遅れの老害か馬鹿のどちらか
どんなプリケーションも、システムが極限まで達するとLisp的なDSLなり機能なりを組み込むことになる
817 :
デフォルトの名無しさん :2014/01/01(水) 19:07:27.03
馬鹿さが極限にまで達してしまったか 可哀想に
↑何を見ても馬鹿としかいわない馬鹿
LISPは実在しない。 LISPとは、素晴しいプログラミング言語を、人工知能を記述するに足るレベルの高いプログラミング言語を使いたいと望む人々の間で自然発生的に生まれた理想の言語である。 はじめはジョークに過ぎなかった。 LISPはこの世のどこかにいるはずの理想の言語だった。 しかしそれは当時のまさに『糞』と呼ぶに相応しい言語にウンザリしていたプログラマの間で瞬く間に広まって行った。 LISPならこう書ける。LISPのあのマクロシステムは良かった。 ユーザーはそうやって、少しずつ理想の言語LISPのイメージを固めていった。 LISPはS式で記述をする、LISPに敵対する言語はJAVAである、LISP処理系はLISPで書かないと落ち着かない。 そしてLISPは親しみやすいことにポール・グレアムを記述した言語なのだ! LISPはこうして、プログラマの理想の言語のイメージのコラージュとして生まれたのである。 プログラマはLISPを欲した。故にLISPは存在するのである。
lispとjavaって敵対してたのか…
そこらはグレアムさんのエッセイとかを踏襲したネタなのでマジレスしないでね。
ClojureScriptみたいなのって他にあるん?
そういうのってだいたいは中途半端というか結局は出力結果を意識しないとうまく使えなかったりするんだよね。 JSをある程度は理解した上でより楽をしたいとか生産性を上げたいとかだったらいいんだけど、JSがわからないからそっちに逃げるっていうのだと破綻しやすい。
プログラムを読むのに状態なんとかの知識があると楽にできるみたいに聞いたことがあるんですけど 何だったか忘れてしまいました 英語でオーマトントンとか言ってたと思うんですけどググっても見付かりません!
状態機械?
ステートマシーン FSM=有限状態機械 など
俺の大学ではオートマトンはオートマトンだった。 オートマトンでぐぐればいいんじゃね?
よく見たらオーマトントンになってるじゃねえか。 そりゃ見つからんわw
ほんとだ、オートマトンにみえたw
話は変わるけど最近playstationでgame object oriented lispなるものを知った クラッシュバンディクーに使われたらしいけどこれの詳細知ってる人いる?
こういう所にlispが使われてるの見てるとワクワクする 日本人はやらないのかな
>>835 マザー2のツール群って、もしかして、岩田社長!?
Thinking Forthを読んでるけど、Lispの長所と区別がつかないなw GCがなくて、より危険性が高い事くらいか? 文法が追加できて、高級から低級まで扱えて、自由の度合が高くて、 部品に分割しやすくて、柔軟な変更が簡単で、ソースが即座に実行できて、 計画しながら実装できるとか。 他の言語はプログラマを檻に入れて猛獣が外、 Forthは猛獣が檻に入ってプログラマは外で自由という挿絵にワロタ。 Forth自体の知識はさほど必要ないし、Lisperが読んでも参考になると思う。
日本語化プロジェクトが上の方に引っかかったけど死んどるんかいな
英語版読んでるから知らない。 言語を作るための言語とか、Application Oriented Languageを作るとか、ボトムアップとか、 プロトタイプを素早く作ってそこから安全にしたり効率化したり修正してプロダクトが出来るとかも出て来た。 アセンブラが標準っぽいのは差かな。
SCHEMEで陶芸家(中三女子)みたいなポジションの人っていうと誰だろう。
つまらない 却下
「みたいな」っていうのが曖昧すぎないか? 陶芸家はメタプログラミング(というかconstexpr)を熱狂的に取り上げるパフォーマーだと俺は思ってるが、 お前のいう「みたいな」は陰核の人という意味かもしれないし、畑違いの本職をもっているという意味かもしれなくて、 どうにも応えようがない。
とりあえずあたまおかしそう(褒め言葉)なTwitterプロフ画像の人、とか
やっと「Yコンビネータ」を読み終わった。 Lispについてはまったく書いてなかったけど、「コードを書いて顧客と話せ」「早く出してやり直せ」 「数値目標を作って集中しろ」などグレアムのスタートアップ(ベンチャー)論の実際が読めて面白かった。 グレアムのプログラミング言語論の理解には、彼のベンチャー論の理解が必須であるように思えた。 不完全でもとにかく素早くローンチして、ユーザーとの対話で次々と修正していく彼の推奨スタイルには、なるほどLispは最適なのかも。 Yコンビネータ参加企業のLisp使用率も知りたかったけど、技術書ではないから仕方ないと諦めた。
グレアムの本を読むと感じるなんともイヤな選民意識みたいな臭さってなんなのだろう?
>>845 できないの、そうできないんだって台詞の後でいまどんなキモチのAAみせられてる気がするからじゃないか?
トントン
>>844 おもしろそうだから Kindle で買ってさっきから読み始めた。
まだ第二章までしか読んでないけどおもしろい。
thx
「普通の奴等の上をいけ」との違いを教えて下され。
>>851 普段のエッセイと言ってる事は同じだけど、第三者視点で、事例の詳細、関係者の人格、他のパートナーの話などが読める。
プログラミングのエッセイだと思いこんでいたので、変化する的も仕様変更くらいだと思ってたら、ビジネスの分野さえも変化する的だった。
ビジネスのアイデアを悩んで得て、はやめにコード書いて修正して反響聞いて修正して、あるいは全て捨ててやり直し、またアイデアレベルから変更して…、
アメリカのスタートアップの変化の速さと規模は驚異的。短期間でほぼ全て変わるように感じられる。
これだけの変化が必要なら、抽象化機能が高くて後から修正の効く言語にこだわるグレアムが納得できる。
もちろんスタートアップ以外の領域で使えないとは思わないけど、グレアムのプログラミング観と起業論は同時に考える必要がありそう。
絶版になったんだよなこれ 日本語版でしかも無料で読めるようになる日を待っていたがまさかこんなに早く来るとは 訳も改善されそうだし興奮が止まらないが公開終了とかの心配はしなくて大丈夫かな?
>John Locke, 人間の理解に関するエッセイ(1690) もうそろそろこれやめようよ‥‥先人の訳業を引用することは全然恥ではないと思うよ‥‥
>>853 なるほど有難うございます。
グレアムのドヤ顔が見えてきそうだ。
>>854 >とりあえずの公開です. 修正中なのでダウンロードはご遠慮ください.
とりあえずwgetした
サーバーに対しては同じGETだから問題無し
不正アクセス疑惑?
数人が一気にダウンロードしたところで IIJ のサーバがどうにかなるわけねーだろ。 ショボい図書館の例とかとは比較にならん。 情報が間違ってる (のとか不充分なのとか) 可能性があるから現時点で保存すんのはやめーやということじゃないのか。 あえて今の段階で保存する必要もないだろうに。
みんなそれくらいわかってて、どこまでボケられるか争ってたのに 無粋な奴だな
ぬるぽ
865 :
デフォルトの名無しさん :2014/01/15(水) 21:11:31.16
ガッ
>>853 グラハムの書いている例って、LISPだからできた、みたいなことを強調する例になってるけど、
むしろそのチーム(少人数で、みんなLISP書けるぐらいの勉強家)がすごかっただけじゃね?
という気がする。
同じチームでJavaでもRubyでも同じようにプロジェクト進められたんじゃないだろうか?
勉強量が同じなら、lispの方が楽だと思う Cとかをいじくりまわしてると、なんだかんだ言ってコールバックばっかりで、最終的にlispみたいになるから 最初からlispでやれよ、と
>>866 そういう意見は今までにも出てるけど、明確な結論は出せないと思う。
Java や Ruby に比べてよりよくかどうかはわからないにせよ、少なくとも「出来る」というのは間違いのないことで、
あとは根拠は不確かなりにアピールして実際に使ってもらって実感してもらって、その結果として潮流が出来るものだと思う。
いずれの結論に転ぶにせよまずは使ってもらわないと始まらない。
現時点で少数派な LISP は大袈裟なくらいでいいんだよ。
>>867 これも色々と言われていることだけど Lisper が Lisp だけしかまともに使えないってことはそんなにない。
他の知識を蓄えた上で LISP に至ったから LISP を楽に使えるのかもしれないし、一概には言えないんじゃないのか。
このスレにいる人なら LISP が好きか LISP に利点を見出した人なんだろうけど、
LISP でプログラミング入門した人ってそんなに多くないんじゃないの??
8bit時代のマイコンでBASIC、マシン語、FORTRAN,PASCAL そしてLISPの順番でした
俺は初めて接した言語はリスプだったな。 それから、ベーシック、アッセンブリー言語、C言語とやっていったな 商業ソフトはリスプ以外で書いてきた。
和田本は、人生で最初に習う計算機言語としてschemeを想定してる気がする
グレアム先生もSICP推しだけど、最初に覚えたのはBasicだからね。
偏見がない日本人もアメリカ留学で出会ってユダヤ人と韓国人が嫌いになる例って多いみたい(自分調べ)
サンプル数は?
アメリカに行ったら、日本人はユダヤ人だと思われててびびった記憶がある
ViaWeb開始は1995年。Cは89、C++は標準規格なし。javaも出てない。 Perlも5で糞なオブジェクト指向が入ったばかり。PythonですらGCがなくて無名。 そしてViaWebの商売もショップ向けのDSLを書いて動的にサーバーで動かすLisp向け。 時代背景とビジネスの内容から、Common Lispで書くのはかなり有利だったのではないかと。
逆にCommon Lispを使ったからこそ、Lispに最適な解決方法を思いついたのかも知れない。 言語がプログラマの発想自体を変えるのは事実だしな。だからこそ言語は自由である方が良いのだけど。
このへんはViaWebの伝記か、実際にライバルを含めて利用した経験がある人が出ないと、はっきりとは言えんな。
lispは手段じゃなくて目的
sbcl用に書いたものをclispで動かしてみたら遅すぎてびっくりした やっぱりある程度効率の良いコードを心掛けたほうがいいのかな
lispは目的じゃなくて思想
lispは思想じゃなくて道
lispは道じゃなくて宗教
全にして無
Norvigのスタイルガイドにもあるし、ある程度は大事でしょ。
syntax-caseって規格に入れるには複雑すぎるってのが問題で、 仕組み自体はそんなに悪くないよね?
define-macroの何が不満なんですか?
単純な場合で言えばこんなのかな。 (define count-number 0) (define-macro (count-increment) `(set! count-number (+ 1 count-number))) (let ((count-number 100)) (count-increment)) (display count-number) やっぱり衝突を回避する方法がないと困る。 CLでグローバル変数に耳当てする習慣があるのは、 グローバル変数に耳当てするだけじゃなくてローカル変数に耳当てしないこととセットで意味があって、 要するに衝突を避ける運用上のテクニックのひとつということになると思う。 だけどSchemeの場合は関数と変数で名前空間が同じなのでグローバルな関数全部に耳当てするわけにもいかない。 syntax-caseにしてもsyntactic-closureにしてもexplicit-renamingにしてもマクロ定義を慎重にすれば衝突しない。 マクロ定義を上手くやれば大丈夫ってのと、マクロの使用を上手くやる必要があるのとだったら前者の方がよくね? というのがSchemeの立場だと思う。
>>889 いまいち syntax-case 他の衛生的マクロについて懐疑的なんだけども
初めて define-macro が微妙だと言われる実例で、少し納得がいった気がする
これって (count-increment) の部分が置き換わるわけだから、
その場所で shadow してしまってる count-number ローカル変数を操作対象にするのは
define-macro としては、ある意味自然だよね (もちろん参照透明性なんて無い)
それでも一瞬、マクロが定義された時点の count-number をリファレンスとして持ってるように
「見え」ちゃったし、本当にそうしたい場合にその手段が無いのは困るだろうな、とは思う
ここからがわからないのだけども、大多数の schemer は、衛生的マクロに対して何を求めてるの?
上記みたいな間違いを減らすための安全性?
自分は、本質を小さく保つのが scheme だと思ってて、そして define-macro は十分に小さくて本質を突いていると思っているのだけども、そこだけが未だに分からない
define-macro があれば他の衛生的マクロは実装できるんだよね?
(それとも gensym 無しではできないの?)
disりたいわけじゃないんだけども、schemer の価値観を知りたい…
>>890 > define-macro があれば他の衛生的マクロは実装できるんだよね?
出来ない。gensymが有っても出来ない。
Schemeの思想としては仕様の序章にある通り「弱点を除いていく」ということにある。
もしも出来ないことがあるのならその機能を付け加えて出来るようにするのではなく、
出来ない理由を取り除くというのがSchemeの目指すスタイル。
結果的に仕様が本質的であろうと小さかろうとそれはただの現時点での結果でしかないよ。
まだまだ議論中のことがいっぱい有って、現時点でのまとめが仕様として文書になってるだけだから小さいけど、
将来的にはどうなるかはわかんない。 今と同じくらいのままの大きさかもしれないしすごく大きくなるかもしれない。
例えばr7rsのマクロはsyntax-rulesだけだけど、もちろんこれはアナフォリックマクロなどの「出来ないこと」がある。
(アクロバティックなことをすれば不可能ではないけど。)
じゃあ出来るようにするには何を導入すればいいのかってことで explicit-renaming やら syntactic-closure やら
が検討されてるし、結論が出れば追加されて今よりは大きくなると思う。
そういう検討中なものがいっぱいあるんだよ。
近視眼的に機能を追加することで急いで肥大化してしまうことは戒めようという感じではあるけど、
簡潔さや小ささは二次的なものであってあくまで目指しているのは欠点の排除だと思う。
ちょっと「思う」って言いすぎだな。 まぁ、あくまで俺の解釈だから。
892 :
890 :2014/01/17(金) 21:57:55.76
ありがとう! 超ありがとう! こういう話が聞きたかった > 出来ない。gensymが有っても出来ない。 え、そうなの… 単に gensym が美しくないとかで拒否されてるものだと思ってた… 欠点の排除が根底にある、かつ、出来ないことがある、ということなら みんながこぞって他のマクロシステムを模索している現状に納得 それで、どうして gensym 有っても出来ないのかは、何を調べたら分かりますか?
マクロは組み合わせて使ったりもするわけだから、 「こんな変な使い方はしないだろう」と思っていても 自然な組み合わせを展開した結果として複雑で奇妙な使い方になってるということはありえる。 というか、そういう複雑さを隠蔽する手段のひとつがマクロなわけで、 複雑さを隠蔽しきれない伝統的マクロ (define-macro) は存在意義を満足してないことになる。
伝統的マクロで出来ることを出来なくしただけ・・・
syntax-case explicit-renaming implicit-renaming syntactic-closure reverse-syntactic-closure 主要なマクロスシステムといえばこれくらいか。 どれかひとつがあれば他は実装可能で、 伝統的マクロで可能な全てのことも可能であることがわかってる。 能力的に同等なのでどれかを採用するという決め手がなくていまだに決着がついてない。
scheme にパッケージ導入しても伝統的マクロじゃダメなのかな…? 衛生的マクロは複雑すぎて、本質を見失ってる気がして仕方ない
CL的な package があれば運用でカバーしやすくなる。 でも問題が完全になくなるわけではない。 scheme は根本的な解決法を求めている。 でも解決法は見つかってない。
ついこないだ chaton で話題になってたけど、変数の参照に関してもちょっと微妙なところがある。 r5rs/r7rsでは未定義の変数を参照するとエラーということになってる。 逆に言えば参照するまではエラーを出さずに動かしてもよいと解釈するのが妥当だろうと chaton では話してた。 でも、r6rsは未定義の変数参照は構文違反 (syntax-violation) ということになってる。 構文違反ってのはマクロ展開を完了した時点 (実行前) に検出するってことね。 実際に変数を評価するかどうかは実行時にならないと完全な検出は出来ないのに 事前に検出することを規格が要求するのもおかしな話で、 俺は「参照」っていう言葉の意味がぶれてるんじゃないかと思ってる。 まぁ、変数解決のモデルも一通りじゃないってこと。 で、それを踏まえて考えたんだが、 CL風のパッケージは第一級 (実行時に操作可能) だからこのモデルを採用するとなると、 事前に未束縛の検出が出来ないという弱点が生じてしまうんじゃないのか。
900 :
898 :2014/01/18(土) 13:39:22.82
chaton と r7rs 読んでないけど。
r5rs でマクロ展開時に未束縛変数を見つけてもエラーにできないのは
次のようなプログラムがあるから。
(define (a) b) ; ここを評価した時点では b は未束縛
(define b 10)
(a) ; 10 を返すはず
r6rs では全定義を読み終わった後に変数参照の意味が決まることになっていて、
動的変数は存在しないので、
評価前に未束縛変数をエラーとして報告することができる。
CL で変数参照っぽいのは
「symbolのslotの参照」と「レキシカル変数の参照」の二種類がある。
未定義の変数参照っぽいのは必ず「symbolのslotの参照」になる。
read 終了時点で既に symbol は存在しているのだから、
評価した時点でエラーが報告されるのは自然な仕様だろう。
なので、CLのpackage風の名前解決だけを導入して、
動的変数を導入しないのであれば、
未束縛の変数の検出はさほど問題ではない気がする。
マクロ展開の話に戻すと、
>>898 で言った「運用」は、
例えば「外部に挿入されうる symbol は必ず prefix を付ける」というようなルール。
>>889 の例で言うと
(define-macro (count-increment)
`(set! mypackage-count-number (+ 1 mypackage-count-number)))
のような感じに書き換える。
CL風の名前解決は乱暴に言うと全シンボルに自動的にprefixを付けるようなものなので、
この運用がやりやすくなる。
でも、理論的な正しさを重視する人にしてみれば解決になってない。
901 :
899 :2014/01/18(土) 14:25:24.60
いずれにしてもCLスタイルのマクロではマクロ使用時の変数衝突の改善になってないということだね。 それは置くとして、私が主張したかったのは、 「CL風マクロをScheme(r5rs/r7rs)に追加したときに弱点が増える」ということじゃなくて、 「CL風マクロが前提としているようなr5rs/r7rs風の変数解決モデルにはそもそも弱点があるんじゃないの?」 ってこと。 r6rsはトップレベルとその他の <body> の差がほとんどなくて (完全に無いわけではない) 理屈としては簡潔で良いよね。
902 :
899 :2014/01/18(土) 14:39:11.74
あ、マクロっていうか今はパッケージの話だった
>>896 能力が同じことがはっきりしてるならあとは好みの問題じゃないの?
議論して決まるようなものなの?
誰かの好みは必ずしも別の誰かの好みという訳じゃないんだよ
最近どこかのブログ(ツイッタだったかも?)でマクロの計算量のオーダーに言及したものがあったような気がするんだけど見付からない。 誰かそういうの見た記憶ないか? 実装面での都合を議論み持込むのはあまり筋の良いことじゃないけど、 どれを選んでも同じなら実装に都合が良いに越したことはないと思う。
scheme のマクロは scheme の枠組みの外にあるっぽいのがなんか気持ち悪い。うまく説明できないけど。
実装の都合は重要だと思うんだけど。。。
>>907 言いたいことはわかる。 ただのリスト操作で扱えるCLと比べると違和感は感じるかも。
syntax-rules がパターンマッチで置き換える感じは scheme とは別言語みたいだもんな。
R6RS の syntax-rules は「手続きを生成する構文」と明記されててモデルが露骨になってる。
そう、マクロ変換子は別フェイズで動く手続きなのだ。
扱うのがリストではなくて構文オブジェクト (リスト (識別子) に文脈情報がくっついたもの) っていうところが CL と違うけど、
動作モデルを理解すると俺は納得できた。
>>908 重要だけど、実装の都合に合わせたがために仕様に弱点が生じるようではいけない。
弱点を無くすという目標よりも実装の都合を優先してはいけないってことで、優先順位の問題。
仕様についてはもうどれでもいいやっていうのがわかったから次は実装の都合を考えようってこと。
syntax-rulesはパターンマッチが嫌い。 あんなミニ言語にする必要がない。
syntax-rules だけだと問題にならないけど、マクロ展開時に実行時同様の手続きを使えるようにするとフェイズの計算がややこしくなるからなぁ。 R6RS ではマクロ展開の環境と実行時環境を分ける方法論でまとめたけど、 CL はごちゃまぜなんだよね? syntax-rules はベストな選択ではないよ。 ただ、それ以外の選択をするには議論すべきことが残りすぎているってだけで。
コロンブスの卵的な上手いアイディアが出てこないものかねぇ。 CL は現実的には完成してる訳で、いつまでも決まらないとそのこと自体がschemeの欠点になってしまう。
なんだかんだでCLの方が柔軟性があるのがなんとも。
worse is better ってやつだな。
>>914 > いつまでも決まらないとそのこと自体がschemeの欠点になってしまう。
R6RS で決まったことを覆しちゃったし、一旦決まっても次がどうなるかわからん。
むしろ決まらないのが scheme のアイデンティティだろ。
>>917 そんなんだから黒板でやってろって言われちゃうんだけどなー
the little schemerを注文したんだけど、良い本?
>>911 みたいな考えが出てしまうのも宜なるかな
それなりに良い本だけど翻訳出てたような。
ERマクロで決まるんじゃないの? SCaだけはやめて欲しい R6RSはなぜSCaにしてしまったのか Largeの状況は知らないけど
scheme みたいな CL (とは呼べないけど) 作ればいいのかな
Common Lisp を小規模にしたようなものということだと ISLISP があるな。 Scheme の思想である弱点を排除するというのを脇において、 Scheme 風の文法で合理的にしたような LISP っていうと何か有るかな?
パッケージを分割して使う部分を選べるCLが欲しい。 evalを外せるとかそういうの。現状、配布には巨大すぎて。 ISLISPはコンパイル時にユーザ関数が実行できない糞だとdisられてたような。
> ISLISPはコンパイル時にユーザ関数が実行できない それは文面の解釈を間違えているというツッコミも有った。
SKILL もそうじゃね?
EuLispを見た感じ、マクロ無いよね。 そのかわりオブジェクト指向的機能を綺麗に整理してある感じ。
マクロなんていらんかったんや。
932 :
890 :2014/01/21(火) 01:17:39.49
>>893 ありがとう
マクロシステムにおけるfunarg問題 ってのが、一番しっくりきた
それを踏まえて、funarg問題をレキシカルクロージャが解決したのと同じように環境をくっつけるという意味で
S式+環境 という発想が、やっと理解できた
ところで、先の文書で「変換Eをマクロ展開の度にやるのは重い」みたいなことが書いてあるけど
read する時点で自動的に identifier に変換するみたいなことは、できないのかな?
(処理系作ったことないからわからない)
何となく議論してる土台は分かったけど、implicit renaming 以外は、マクロ書きにくそう…
>>932 具体的な API は慣れの問題だし、たいていの処理系は複数系統の API を用意すると思う。
implicit renaming でも具体的な API が定まればそれを使ってポータブルに explicit renaming 展開器を書けるので、
それをどこかから持ってくればよいだけの話なので。
Scheme が採用すべき基礎 (プリミティブ) となるモデルはどれかというのが問題なんであって、
使い勝手に関しては使い勝手のよいものを勝手に作ればいいよ。
Scheme の思想は弱点の排除。
使い勝手のよいものがあることよりも使い勝手のよいものを作ろうとしたときにそれが可能であるような仕様を目指してるんだと思う。
little schemerみたいな問題集形式でマクロを扱った本とかホムペとかってありませんか
935 :
デフォルトの名無しさん :2014/01/22(水) 22:27:20.14
環境はMac OS Xです。schemeの勉強始めようと処理系を一通りインストールしました。 emacsで使い勝手が良いモノで実用になるもを選ぶとRacket、chicken、kawaあたり? Geiserにchickenを組み込もうとしましたが動作イマイチで素直にslimeに。 KawaはJDK7で使い始めたらJDIが無いと言われた。 結局chickenが大量のeggで勉強も実用も捗るしcとの親和性でメインになりそうです。
>>931 初期のLISP処理系は構文を追加したかったらソースコードをいじるとか普通だったからマクロみたいな仕組みは考えてなかったみたいよ。
>>936 ちゃんと設計すればS式変換の工程は分離するだろうし、
言語仕様に含めてなかったとしても実質的にマクロじゃね?
FEXPRがあればMACROいらなくね?
性能とのトレードオフがあるだろ。 それを許容できるなら有りだと思う。
>>930 defsyntaxって構文があるっておにぎりの人がいってた。
で、で、defsyntaxというこ、構文があ、あるんだな。
おにぎりの人といえば最近はリスプライブラリを紹介する企画やってるな。
http://atnd.org/events/46706 これこそまさにリスプコミュニティに足りなかったものだと思う。
企画としてはよいんだけど、俺はコモリスは使わねーし、誰かスキームのライブラリももっと紹介してくれ。
スキームライブラリの紹介記事を書いてるの加藤氏だけじゃねーか。
主要なSRFIは書くのだろうし、他は処理系依存が多いから難しいんじゃね?
>>943 スクウェアでLispってShiroさんと関係あるのかな?
FF7とLispの関わりも、よく分からないけど。
おにぎりの人の紹介は素晴しいけど、タイトルに何をするライブラリなのかの要約欲しいです。
scheme の弱点は実はlisp-1 であることだつたりしないのかな
願望?
"Technical Issues of Separation in Function Cells and Value Cells" には 確かいくつか Lisp-1 の短所は挙がってた気がするけど。 弱点て言うほどでもないような。
>>947 ,948
ありがと。日本語でもっと情報出て来て欲しいな。
というか誰かShiroさんの奴を和訳して欲しいな。
言いだしっぺの法則を発動!
>>943 今時Symbolics持ち込まれても困るだけだろうに、でかくて重いし
JUNってファッションメーカーのデザインマシンとか思い出しちゃうくらいいにしえ過ぎる。
;;;キーボードは好きだけどなー、今時のマシンにFranz乗っけた方が使い勝手は良いし、もう古い話とか入らないとおもうんだが。
>>952 Schemeが弱点を無くすことを目標にするとはいっても
より酷い弱点を潰すために仕方なく選択したことってあると思うんだよな。
で、どの処理系がSCHEME最強なん?
Lispマシンのキーボード欲しいな
俺も欲しい
腱鞘炎になりそうだから俺はいらん
>>957 状況によるし、何を重視するかにもよるけど万能なのは Racket や chicken。
gaucheってもう落ち目?
(log 1000) と打つと 6.907755278982137 とかえされるのですが、なぜですか?logの使い方が分かりません。 log10 1000(底が10,真数が1000)は3ではないのですか? (なぜならlog10 1000=log 10 10^3=3log10 10=3)
自然対数って知ってるか?
>>963 底を指定するときには第2引数になる。
指定がないときには自然対数となる。
(log 1000 10)
この順序は数学をやる人には気持ちが悪いと思う。
scheme の log 底は e だよ (/ (log 1000) (log 10)) すればええちゃう? 高校で習わなかった?
>>964 ありがとうございます、常用対数と思い込んでいました
>>965 (log 1000 10)ではエラーがででしまいます
>>966 これは底の変換という認識であっていますか?
>>966 (/ (log 1000) (log 10))
を実行したら、2.9999999999999996
とかえされたのですが、これは(log 1000),(log 10)を先に計算していることからくるずれでしょうか?
3はどうやったらでるのですか?
(define (log10 n) (/ (log (/ 1 n)) (log 0.1)))
最近chickenの人増えたの? 数ヶ月前にIRCに質問しに行った時に、使ってる日本人は一人しか知らないと言われたけど 処理系の統計欲しいな
>>967 R5RS の log は底の指定が出来ることを要求されてない。
底が指定できるようになったのは R6RS から。
>>962 そんなことはない。
Gauche は「綺麗な Perl」とでも呼ぶべき立ち位置。
日常的なスクリプティングにさっと使えて、
そのままある程度まで規模が成長しても実用に足る性能があって、
泥臭い現実を許容する柔軟さもある。
ただ、 Racket などと比較するとユーザー数が少ないし、
その分だけ実績が少ないのは確か。
バグの洗い出しとかトレードオフの見極めとかは
実際に使われる中で磨かれるものなので比較すると相対的な差はどうしても有る。
よくも悪くも Gauche は shiro さんが使うための道具で、
shiro さんの価値判断による実装の選択がある。
決してそれが悪いわけじゃなくて、
多数の意見が入ってどっちつかずのグダグダになるリスクとどっちがマシかってことになるんだけど、
結果的に Gauche は Racket ほどの「万能さ」を得てはいないという話。
Gaucheはscheme処理系の中で一番こなれてるな。 マニュアルの充実といい、作者が自分で使い込んでるから、かゆい所に手が届く。 他の処理系はカタログスペック的にはあるのに、こなれてないことが多くて、作者自身があまり使ってないように感じる。 Racketはそうでもないけど、あれはまだschemeなのだろうか。
>>973 Racket は少なくとも R5RS と R6RS はサポートしてるから Scheme だろ。
より正確に言えば Scheme を含む多言語開発環境 (?) かな。
LISP系だけならまだしもALGOLサポートは誰得なんだと思うけど。
> 作者が自分で使い込んでるから、かゆい所に手が届く。
そこなんだよね。
逆に自分の使い方を優先しちゃうことになるから、そこから外れたところにバグが残ってたり、
バグではないにしてもあまり積極的にサポートしなかったりということになる。
そこはオープンソースなんだから必要な奴が貢献すればいいという話ではあるんだけど、
どうせ貢献するならコミュニティ人口の多い方でやろうってなって更に差がついてしまう。
Androidのアプリケーションってリスプでできんの?
できる。
>>975 それを目指してリスプの勉強はじめた
でも、起動が遅いとか、有料言語は高価だとかjavaのようにはいかないらしい
Gaucheってなんて読むの?
ガウチョ……じゃなくてゴーシュ
>>975 Clojureが起動時間さえきにしないなら AndroidでもREPL付きでアプリ作れてワラタ事がある
健全マクロは複雑なだけ。 SCHEMEらしくない。
Schemeのコミュニティとかメーリングリストってあるの?
>>982 しつこいやっちゃな。
伝統的マクロは健全なマクロに比べて弱点がある。
はい論破。
お前が健全なマクロを嫌いでもいいがSCHEMEの方針として明記してある内容に反しているのは伝統的マクロの方なんだよ。
伝統的マクロこそ「SCHEMEらしくない」んだ。
(3p) 俺は t だぜ
は?
emacsでschemeを使いたくて、mzschemeをインストールしようとしたんだけど、パッケージが見つからない aptitude install mzschemeじゃだめだったんだけど、教えてください
俺は Debian とか使ってないからパッケージ名は知らんけど、 MzScheme の今の名前は Racket になってるのでそれっぽいの探してみて。 名前が変わったのはもうだいぶん前なので各ディストリビューションも追従してるはず。
Windowsで使ったらメモリがんがん食って落ちる事が多かったが。 今は直ったかな?
>>990 あれは IDE がメモリ食ってたんじゃなかったっけ。
>>988 は emacs 使うみたいだから問題ないんじゃね。
racket の make-set!-transformer って R6RS の make-variable-transformer と同じだと思うんだけど、 どうしてわざわざ違う名前で提供してるの? 何か微妙なモデルの違いとかあるの?
思想の違い。
単純なschemeの規格に不健全マクロを実装するのがschemeの醍醐味だろうにのう
数リストの中身の合計値を求めるmy-sumを作って (define (my-sum ls) (if (null? ls) 0 (+ (car ls) (my-sum (cdr ls))))) ロードしてから(my-sum (123 4 9))と打っても rocedure application: expected procedure, given: 123; arguments were: 4 9 ってかえってくるんだけどどこが修正箇所なん?
'(123
ありがとう!クォーテーションが欠けてたのか
quote考えた奴は天才だけど LISPモードにでもしないとエディタの色分けが壊滅するよな ~とか$とかにできんかったのか
.
∧,,,∧ ( ・∀・) 1000ならジュースでも飲むか ( ) し─J
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。