(1) car, cdr のそれぞれの読みを答えなさい。
(2) car, cdr はそれぞれ何の略号でしょうか? 答えなさい。
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。
なお、hogeはNGワードに追加しておくことが強く推奨されています。
>>4 foo,bar,baz, fuga , hehe, gegeに付いてはいかがであろうか?
通は aho を使う
エイホ?
つまりawkを使うと……
最近仕事でシェルスクリプトとかOS標準の底辺言語ばっかでLISP使えないからちんちんいらいらする
Gaucheって処理系全部USBメモリに入らなかったっけ?
チームでやってる仕事だと物理的に持っていけるかどうかとか関係なく使えるものが限られることはあるんじゃね。
うちの会社は成果物以外の開発環境は自由だから、lisp使いまくってるわ
女王陛下のLisp
ラムダ計算のとこがさっぱりわからん
成果物って果物が成ったからどうしたんだろうって思っちゃったじゃないかよ。 ギギギ
中国人乙
λ珪酸とか所詮表記の問題でしかないんだから「そーいうもん」って思って読み進めりゃいいよ
定義やモデルは「そうすることで何が便利か」ということに着目すべきで、
「それは何か」ってことを考えても仕方ない。
だって誰かがそう決めたという以上の意味なんてないんだもの。
そりゃそうだが、素数夜曲のラムダ計算の説明ってあまり後ろの話しに関係ないんじゃないか?
衒学趣味をちらつかせたい高校生向けという感じが否めないなあ。
それでいいんじゃないの。 最初は中二病でも役には立つんだし。
うむ、中二病も大事なのだ。世界を変えるくらいの気構えを持つべし!
違うなあ
何か?に対して、かくかくだよぉーん
とする、させることを概念化することだな
視座なくして 何か?なんて意味がない。
それ自体の意味、本質!
なんていやつは形而上学まみれの科学もどき
それ以前に日本語になってないだろ…
典型的な酔っ払いのレス
そう、聞こえるのは薄っぺらな哲学音痴ならでは
完全に狂ってますねk
What is X?
が自体的に成り立つなんて思ってるお馬鹿がまだまだうじゃうじゃだな
>>29 relation とかなんとかですか?もうききあいたよ
picrin は名前が可愛い。
わかる。
最近、形式言語から理解したくて集合論を調べてて
Lispってまんま集合論で、すごい発想はなにもなくて
証明されてるものを実装したってだけに感じて
Lispのみならず、データ構造などの概念の多くは集合論から端を発しているものが多く
理解するには集合論について理解を深めることが肝心と思っけど
そういうことに言及する人とか本とか少ない気がするのね
Lispを使う人々は、教える人も教わる人も、
集合論などはなっから理解してる本業の人たちばかりだから
あえて明示的に指摘しないのかなとも思うけど
そういう資料があれば、理解が深まるし誰にでも確実に理解できていいと思うんだけどな
そりゃまあ、形式的に何かやろうとしたら集合論の上に乗っけるのが普通だろ。
それでも集合論とMcCarthyのLispの間にはかなりの飛躍があるので、
「すごい発想はなにもなくて」ってことはない。
McCarthyのLisp以前の話なら計算模型(オートマトンとかラムダ計算とか)の教科書を読んどくといい。
McCarthyのLispが導入したものが何なのか知りたいならMcCarthyの論文を読めばいい。
McCarthyのLisp以降の話ならプログラム意味論に行くといい。
>>35 俺には雲の上の話だな
いま、rplacd使ってセルのつながりを変えるところに進んだ。
Lispは楽しいな
>>35 ありがとう助かった
データ構造と集合論との関係とかは、プログラム意味論に当たるんだね!
暗黙のうちに理解される自明なことで、あえて書いてくれないのかと思ってたよw
あとさ、McCarthyさんのすごかったところは、それこそプログラミング意味論的なものなんじゃないかなとも思うけど
まぁとにかくその辺り勉強して論文を読んでみるとする
ゲーデル・エッシャー・バッハとかは?
>34
理解しなくても使えるからだと思う。
「本業」ってどういうのを想定してる?
理論を表現するために LISP を使うスタンスとプログラミング言語としか見ないスタンスが有って、
後者の方が多数派ってことなんじゃないかな。
はちみつ見るの久しぶり
俺はLispを柔軟に書けるて実行速度がそれなりに速い言語としか見てないよ
現実を抽象化し、そのデータを処理する事を考えるのに、
手続き的な思考と、集合論的な思考と、どっちが馴染むか。
手続きで考えた方が良い場合もあるし、宣言的に考えた方がいい場合もある。
今目の前の問題はどちらだろうか。
という選択があるのかないのかで話はけっこう違うんじゃないか。
数学は現実を記述するための言語なのだから、
理論を表現しても「それが何の役に立つ?」という話になるし。
>>34が本当に必要だったもの
ダイクストラ/ホーア/ダール「構造化プログラミング」
>>34 あなたは素晴らしい。才能がある。
技巧だけではなく理論面も掘り下げていってほしい。
昔のLisperは理論、実装ともに堪能な人が多かった。
最近はそういう人は少なくなった。
酷い自演を見た
call/cc
>>43 そうかも
でも、全然駄目かも
頭は良くても態度に問題が
それが実践でどうでるかだな
また、それは社会関係だけでなく能力の伸び代も大きく規定するし
さーて、どうかなあ
俺は演繹的宣言の態度がダメだと思う
>>37 データ構造を集合として扱い、ラムダ式(関数)を集合間の対応(写像)として
数学的な(=形式的な)意味を定義しようとする試みは、昔から行われていた
しかし、ラムダ式の自己適用(ラムダ式を入出力とするラムダ式)で起こる
論理的矛盾の解消が壁になっていた
具体的には、計算対象を集合 D とすると、ラムダ式の自己適用は
D = D -> D で表されるけど、数学的常識的には D の濃度は
D -> D の濃度よりも小さくなければならないから等式が成立しない
これを解決したのが、D.スコットによる領域理論(domain theory)になる
領域理論については、以下の書籍が日本語で書かれた良い入門書になる
・プログラム意味論 (情報数学講座): 横内 寛文
http://www.amazon.co.jp/dp/4320026578/ また前述の領域理論が生まれた背景は、以下の古い書籍から引用したもの
・岩波講座 情報科学〈12〉算法表現論 (1982年): 木村 泉, 米澤 明憲
http://www.amazon.co.jp/dp/B000J7P0KY/ あと、理屈(理論)は大切だけど、実践はもっと大切だよね!!
もしも未読であれば、ぜひともSICP本を読まれることを薦める
あと『数理情報学入門: スコット・プログラム理論』
中二病は夢があってほほえましいが
高二病はあまり役に立たない直ぐにでも治療が必要
数学板でやればいいんでないの。
ム板でそんな話しても相手にされなくてあたりまえだろ。
形式手法を学ぶなら今でしょ、というご時世だというのに何言ってるんだか
ム板の話ではないという話をしてるのに時流がどうとか言いだす話が通じないやつ〜
長文さんが来てくれるとスレが盛り上がってひじょうによろしい
ぜひづづけてくれないかね
プログラミング技術において形式手法は、今後必要になることが増えることはあれ、
減ることはないだろう。それを「ム板の話ではない」と決めつける理由は、老害脳以外に
無いと思うが、まぁ老害ならばしかたないな。
プログラミングに必要っていうのは否定しないよ。
だからといって何もかもム板でやってよいというのは暴論だろ。
ゲーム制作やウェブ制作だって別板なんだぜ?
>>56 ならば、以後、はちみつはプログラミングとは無関係なウンチク語りを一切禁止な
はちみつさんはうんち食ったりそれを誇らしく語ったりなんかしねーよ
おいやめろ
プログラム作ってるのに、情報科学専攻しなかったのが遠回りだったと言っているように聞こえる。
小学生みたいに手続き型のプログラム知らない人のほうが、lisp理解してもらいやすかったというのもあるぐらいだし、
理論から入った方がいいかは、人によるんじゃないか?
最近はネットで講義を公開してるから、理論からの方が納得出来ると思ったら履修するといいんじゃないか。
https://www.coursera.org/course/automata
Lispを布教したいと考える立場からすると、
そういう理論から入ろうとするのは余計なハードルじゃないか。
よりよく使うには理論があった方がよろしいというのはわかるが、
まずLispを使おうという人がそんなに多くない状況なんだから、
もっとキャッチーなキラーアプリとか使い易さでアピールする方がいいよ。
あれ?
はじめは、チューリングマシンとその他の計算モデルの等価性からかなと。
まずは使い勝手が意外とよいところを知ってもらうところから始めるというのは賛成だな。
理論が実用の役に立つという意識付けというか目的意識があった方がモチベーションに繋がるから、
先に実用が有った上でこういう理論が当て嵌められるよっていうのがあると良さそう。
理論なんて実用されなきゃただの難しいパズルだもん。
パズルが悪いわけじゃなくてそれはそれで尊重はするけど、プログラミング言語はエンジニアリング寄りのものだしさ。
現実と理論が乖離してたときにどっちが正しいと思う? そりゃ現実が正しくて理論が間違ってる。
エンジニアリング的視点に立つなら理論背景は後回しにするのが合理的だと思う。
そんなのは「ラッキーでうまくいつちまった」って感じのもので
俺派仮にうまく行っててもそれでいいとも思えないな
Lispを布教とかどうでもいいよ
今後Lispの替わりが出てくるとも思えないし
67 :
デフォルトの名無しさん:2014/02/16(日) 22:48:18.16
そんなこと言ってていいのか
足元巣食われるんじゃないのか
javascriptに食われそう
既にXMLでこてんぱんじゃないの
抽象化の土台として理論があるんじゃないだろうか。
数学の問題の解き方を覚えるのと、数学を理解するのとは違うわけで。
なんでもかんでもLisp系でやらなくても良いし、Lisp系使わなくても良い。
悟りを開くためにやる言語だとか言われてたよね。
非Lisperな対してはそんなスタンスで良いんじゃないかな。
じゃあ理論的な部分抜きで悟れるのか?って話になるよね。
72 :
64:2014/02/17(月) 08:53:08.39
>>65 誤解があるみたいだけど、理論が要らないと言ってるわけじゃないよ。
どうして上手くいったのか、上手くいかなかったのかということに解は必要だ。
だけど、上手くいった体験を持たずに理論が先行するのがよくないと言ってんの。
WS-* で死屍累々のXMLゾンビかよ
>>69 はw
こんな話をしてるのが無駄だろ。
いいから数学板へ行けよ。
なんでそう頑にム板でやろうとすんの。
理論なんか無くていいと思ってるおまえが無駄。
いいからこのスレから消えろよ。
なんでそう頑にスレを自分の思い通りにしようとすんの?
>>75 無くていいとは言ってなくて、この板でやるべきじゃないという話なのになんでそうなるの?
>>75 そうやって故意に話を捻じ曲げて相手を悪者にする論調は何なの?
それで得することあるの?
数学板が機能してないクズの集合体だからこっちでやりたいの?
ちょっと理由を言ってみてくれんか。
数学板は AA 荒らしが多いな。 実際にはそれをやってるのは一部なんだろうが…。
あれは話題に付いていけない人が多いからという説が有力視されてる。
初心者を置いてけぼりにする感じが駄目なんだな。 ム板の殺伐さとはまた違ったハードルだと思う。
わかっている人たちで議論してより高度な知識を得たいとかいうのなら2chは向いてないよ。
「初心者の方が多い」という現実があって、ゆるいところから入門してだんだんステップアップするもんだろ。
そんでもって2chはその「ゆるいところ」であるべきだろ。
だから最初にやっかいな理論を持出すようなことはすべきじゃない。
質問があれば必要なところに誘導すれば充分だろ。
わからないんだよぉ
でちまうよぉ
。ρ。
ρ
mドピュッ
C|.| /⌒⌒⌒ヽ/~ ̄ ̄ ̄ ̄ヽ 〜
/⌒ヽ⌒ヽ___ | ∴ヽ 3 ) 〜
./ _ ゝ___)(9 (` ´) ) 〜
/ 丿ヽ___,.───|彡ヽ へ へ| 〜
_/ ) ( Y ̄ ̄ ̄ ̄) 〜
(__/
板違いというなら適切なスレを教えてくれ
誰か数学板に、Haskellを学べば東大女とやれるって書いておけ
数学科を出て、コールセンターで働く不幸な人が絶えまない。
やるべきではない?その根拠は何だろう?
理論抜きになんのプログラムの話が出来るんだ?
程度問題だろ。
まあ精根尽きるまで駄々をこねてればいいよw
86 :
82:2014/02/17(月) 21:12:13.66
>>78 なるほど。
しかし、何でも君の「べき」に付き合わなきゃならないのかい?
そもそもみんなちゃんと r5rs ですら仕様の意味論の部分読めてるのか?
うちの院卒の新人に聞いてみたが、一人もまともに説明できなかったぞw
プログラマにそれが必要か? いや、わからないよりわかる方が良いというのはわかるよ。
そうは言ってもどうせそんなに頻繁にややこしい話は出ないから好きにすりゃいいんじゃね。
ただ、みたいにLISPERなら理論面もわきまえてて当然というスタンスは駄目だろ。
間口を狭めるだけ。
>>89 そうは言ってもどうせそんなに頻繁にややこしい話は出ないから好きにすりゃいいんじゃね。
ただ、みたいに:
LISPをプログラミング言語としか見ないスタンスが多数派なのだから
意味論を含む理論に関した話題は板違いであり、数学板でやるのが
当然というスタンスは駄目だろ。
間口を狭めるだけ。
おれはlisp に絡んでりゃ何でも良い、ってスタンス。
だいたい掲示板なんだから、誰かが面白そうな話してりゃ絡めばいいし、
そうじゃなければスルーするか、自分が面白い話提供すりゃいいよ。
間口を広げるべきだというのもドグマだろ。
俺は理論語れるほどじゃないが、語ってる人が居ても良いと思うぞ。
つまり、リップキスもLisp方言だからディープキスの話題でもいいのかな
あすみんの話題も有りってことか。
それは流石に、仕様書に載ってたり、実装されてたりしないような?
初テキストの「リスト遊び」をそろそろ終えられるので
「リスト遊び」の著者が推薦している(オーム社版の)「Scheme手習い」注文した。
Lispって楽しいな。
Lispでアウトラインプロセッサ作ろうと思ってって始めたけど、その前にLisp自身を作ることになるかな。
ま、いいや。
>>92 Erlang上で動くProlog処理系おしえて(;´Д`)
前に探したけど、見つからなんだ
>>87 下らないことで偉そうにしてる人って居るよね
そのぐらいしか人生で自慢することがなくって、心の支えにしてるんだろうから、
そっとしておいてあげよう
100 :
デフォルトの名無しさん:2014/02/19(水) 14:32:53.88
だれかー
Lisp の字句解析教えてー
Lispのシンボルは数字が先頭ってこともあるじゃん?
そこがどうすればいいのかわからん。
数値としておかしかったらシンボルにすれば
頭良い
意味解析までシンボルのままじゃだめなん
頭良い
105 :
デフォルトの名無しさん:2014/02/19(水) 21:52:18.26
セルって car cdr それぞれを指すの?
それとも その二つどちらもあわせたデータ構造を指すの?
コンスセル、ドット対、ペア
「セル」とはあまり言わないんじゃないかな
LISPでいうセルはcar cdrの2つのペアと決まっとる
例外なくな
car cdr
この2つの発明により、LISPはマジョリティの道から外された
CommonLispは必死に抵抗したが、結局car cdrには勝てなかった
セルとドット対はちゃうぞ
セル(またはコンスセル)のCDR部が他のセルへのではなくnilを除くatomへのポインターをもつとき、リスト表現できずにドット対表現される。
なお、リストはドット対表現可能。
(1 ) → (1 . nil)
コンスセルとドット対は一緒じゃないの?
111 :
110:2014/02/19(水) 23:02:55.38
コンスセル=ドット対の特殊なものがリスト、だと思ってる
リストなるものは、正確にはリスト表現なるものは、
セルのCDR部によってリンクされる各セルのCAR部がポイントするデータを羅列しカッコでくくったものだな
式としてのリストは存在しても実体としてリストなんてものはない。
あるのはセルとアトムだけだ。
ドット対は外部表現の名前って感じかな。
>>114 コンスセルは表現ではなく実体。
ドット対とはあくまでドット対表現の意味
セルの表現にドット対表現とリスト表現がある。
あるセルのCDR部は、たかだか一つのセルまたはアトムしかポイントしない。
しかるにドット対表現では
(1 . (2 . (3 . nil))) のごとくセルのリンクを、そのCDR部に表現可能であり、いかなるリンクにてあるかを、たかだか1つのドット対表現から知ることができる。
しかし、セルをいくらみても
CAR部とCDR部のポインターの先を見られるだけで、先の先については何も知ることができない。
片や実体、片や表現。
Cellとdotted pairは同じものではない
あらためて Scheme の規格を読んでみると cell って言葉は出てこないな。
cell に相当する用語は pair ということになると思うが、
pair は dotted pair とも呼ばれると書いてあるから同じものという扱い。
表現方法のことは dotted notation という用語になってる。
Lisp 族でも物によって多少ニュアンスが違ったりすることはあるんじゃないの。
ペアってのはcarとcdrの両方にアトムが入っているやつだろ?
ちがう
>>107 のいうペアは型としてのいわゆるペアとは違うのでは?
ああ、通常の単語としてのペアか
125 :
デフォルトの名無しさん:2014/02/20(木) 12:00:59.70
LispでいうObjectってなに?
どの標準で?
127 :
デフォルトの名無しさん:2014/02/20(木) 13:24:30.48
Object指向って意味でないやつ
LispとかけてObjectととく
そのこころは
聞いたことあらへんな
129 :
デフォルトの名無しさん:2014/02/20(木) 16:31:45.05
Lispの実装についてプログラム終了時のメモリ開放は明示的にするべきでしょうか?
または、OSに任せてよろしいでしょうか?
メモリに限らず、Unixのプロセスが持っているファイルディスクリプタなどのように
OSが解放することが保証されている資源で、プログラム=プロセスという形で
対応させてるなら、それで良い。
CtrlキーはAの横に位置し、小指で押すものなんだと、
そう考えている時期が僕にもありました。
左右の小指の付け根で押す方が圧倒的に楽
親指で押したほうが圧倒的に楽
それ、なんてキーボード?
日本語キーボードの変換と無変換をctrlに割り当ててる
俺も小指の付け根派だな
無変換にはシフトを割り当ててる
ctrl + Alt + qが押し辛いから却下
小指の付け根で押しやすいキーボード教えて
>>138 Dellの日本語キーボード。左右にCtrlキーとAltキーが配置してるやつ
Aの左にCtrl
神が決めた宇宙の真理
小指が痛くなるのも神の御意のままに
カーちゃん、クダーらねえよ
そりゃコンスしました
lisp マシンのキーボードってどんなだっけ?
今日勉強したこと
;;;リストの最後のセルへのポインターを得る
(defun lastcell (lst)
(while (cdr lst)
(setq lst (cdr lst)))
lst))
そうか
標準でwhileが入ってるのってallegroclとemacslispくらいだろ
そうなんですか、じゃ再帰で書いてみました
チラシの裏の勉強スマン
(defun lastcell (lst)
(cond
((null lst) nil)
((null (cdr lst))
lst)
(t (lastcell (cdr lst)))))
>>149 (cdr nil) → nil
であることを考えると
((null lst) nil)は不要だな
自己レス、やめます。スイマセンでした
今晩のお勉強、束縛。
俺の部屋に直子を今晩束縛してくれ
>>151 何故か「直子の代筆」と言う商品が想起された
「束縛する」というのは便利だな。
いちいち「変数xに××へのポインターセットし」と言わずに「変数xに××を束縛し」で済む。
(束縛の意味を誤認しているかもしれないけれど)
>>154 それに関するポールのコラムにリンク貼ってあるじゃん
これからは世界の料理ショーに専念するんだな。
そのボケは若い子には分からんのとちがうか
Y Combinator はデコイ
Υコンビネータの時代が来るね
>>153 見事に誤認してる。
ポインターとか考えてたらはまるだけだから。
考えるなって言ってるじゃん
>>154 アメリカもマスコミはマスコミということか
>>163 束縛は束縛だよ。 いわば定義なので、束縛に束縛以外の意味などない。
実装レベルの話なら別だけどさ。
紐付けか関連付けかくらいに思っとけばいいんじゃないの
緊縛変数
初心者がコンテナを関数で渡そうとしてはまるパターンだな
束縛そのものに実体は無い
束縛先を変えるしかない
例えばヤンキーに束縛されている女がいたとする
そのヤンキーと女との束縛関係には実体がない
がヤンキーは確実にその女を束縛できる
女は他者によって自分を変えることはできても
ヤンキーからの束縛からは自主的に逃れられない
ヤンキーが飽きるか死ぬまで女は束縛され続ける
仮にヤンキーが死んだ場合、女も道連れで一緒に死ぬ
ヤンキーに見放された場合も女は孤立して静かに死ぬ
女が生き残るには、ヤンキーと別れる前に
他のイケメンによって束縛されなければならない
女は束縛され続けることでしか生き残れないし生きる術を知らない
逆にヤンキーとイケメン達で女を共有することも可能である
女は束縛され続けなければ生き残れないと書いたが
稀に他の女と結託することで保護を受けられる場合がある
そうやってうまいこと他の女を盾にしていけば
その女は束縛関係を生きながら断ち切ることができるかもしれない
そのことを最後に付け加えておく
この前そういうドラマやってた
勉強してる
何のためにはじめたのか覚えてはいるけれど、それは少しどうでも良くなってCommon LispやSchemeに親しむこと自体が楽しみになってきた。
そのうちCISPも読んでみよう。
仕事にはならないだろうけどね
>>177 >CICP
SICP?
>仕事にはならないだろうけどね
この一行を思いつきもしなくなったら本物
食品系のライン作業者
ライン作業をlispで解決出来たら本物
lispはORツール揃ってるからな
工場のシステムは30年前からそのまま動いてたりするから、ナメたらあかんぜよ
ラインの作業者にシステムの保守をやらせてくれるわけがない
typed racketが超高速化したみたいなんだけど
ソースコードをいじって遊べるほど安定化はしてるんだろうか
typed racketの実装をいじって遊んでる間に
本家側のリポジトリが超進化してしまって整合性とれないような
そういう段階なら、まだ手出ししたくない
いつごろ安定するのだろう
いつまでも発展し続ける。
継続すげー これだけでもSCHEE最強
シェー?
Shen
継続は確かに面白いけど、scheme で面白いのはあとはマクロくらい。
Haskellも勉強しているんだけど、あっちには圏論をバックグラウンドとした未踏の世界が相当広がっている。scheme って良くも悪くも、すごく単純な世界だよね。
Scheme でも静的型や型推論、 Haskell 風のクラスシステムは出来なくはない。
(語彙をまるごと用意しないといけないのであえて Scheme でやるのは馬鹿げているけど、
Haskell 処理系が登場する前にプロトタイプを記述する目的でなら Scheme は有用だったかもしれない。)
そういったパラダイムを言語ユーザが欲っしたときに邪魔するものが無いようにというのが Scheme の思想なので、
言語自体が何らかのパラダイムに強く縛られるのは望ましくない。
それならschemeというかlisp方言全般で言えるな
Clojure は楽に書ける Java って感じ。
第一級継続は Ruby や JavaScript の一部の実装にも有るし、
陽でない (処理系の内部構造で) 継続のようなものを持っている言語処理系はそんなに珍しいことでもない。
起源は Scheme なんだろうし、後の色々な言語に影響も与えたのは間違いないけど、
今では他の言語と比べて第一級継続があるから凄いということもないと思う。
それよりも、第一級継続を元にしてバックトラックさせたりコルーチンやらジェネレータに応用したりする枠組みを
作ることが出来るという抽象化の能力こそ Scheme の素晴らしさだと思う。
HASKELLのcallCCは?
Haskell のは名前こそ callCC だけど call/cc とは使い方が違うよ。
>>194 バックトラックやコルーチンが実装できるのは確かに面白いと思った。でも、それらはもう何年も前からある、継続の利用例だよね。他には継続の使い道、あるのかなぁ。煽りじゃなく純粋に知りたい。
第一級継続は重要ではないと言ってるんだが、伝わってなかったかな。
プリミティブな機能を抽象化の壁で覆う力が強いということを強調したつもりなんだが。
制御構造とは何なのか、という叩き台にはなっていると思う
繰返しになるけど、継続は言語処理系内部では有るものなんだよ。
そういうものが有るということに気付いたというのが Scheme の成果だし、
様々な制御がどういうものであるかという「根拠」となるのが継続。
ダイクストラはプログラムの構造化を提示したが、
更にそれの基盤になる概念が継続というわけ。
例えていうなら、原子が最小の単位だと思ったら素粒子が有ったわーみたいな。
で、その継続を第一級としたのは、
現時点で未知の制御構造を導入したいとプログラマが思ったときに
それを邪魔しないようにという Scheme の基本思想を反映したものであって、
未知の何かに対して早々に決断しないという慎重さでもある。
なんでschemeにはgoto(jmp)とラベルが無いのか
継続呼び出しだと内部実装的に大げさ過ぎるのが判ってるし
末尾再帰でループを書くよりもgotoで書いた方がやはり大抵の場合速いわけで
named-letなんてgotoをかえって判りにくく書いたようでやりたい事がぼやけてしまう
っ マクロ
土方の意見聞きました
強盗やってろ
よほど手抜きされた処理系でもない限り末尾呼び出しがgotoより遅いなんてこともないしなぁ
ただの思い込みで批判されてもねぇ
>>200 今は未知の、新しい制御構造が出てきたときでも継続さえあれば十分だ、としよう。でも、もしもう新しい制御構造なんてものが無いなら、継続の価値は既存の制御構造を抽象化し統一的に上手く説明できるだけ(それはそれで立派な成果だとは思うけど)になる。
で、新しい制御構造って研究されてるのか、知りたかったんだよ。
新しい、ていうか、問題ごとに適応したコルーチンのようなものじゃないの?
複数の木をそれぞれ非連動で同時にたどるとか。
>>205 そうそう。
>>206 の意見には賛同できる。
欲しい構造としてはコルーチンなんだけどインターフェイスの面で微妙に違うのが欲しかったりとか。
>>204 末尾呼び出しなだけではgotoと同等にはならない。
末尾呼び出しをgotoに変換するには、更にいくつかの仮定が必要。
>>209 言語仕様上、確実に末尾再帰を最適ができるように設計された言語がSchemeだろ
逆に、clojure や scala は JVM の制約で末尾再帰最適化ができないと書いてあったけど、あれはなんだったのだろうか
212 :
209:2014/03/05(水) 10:38:59.19
>>210 Schemeの仕様は無限回の末尾呼び出しができることしか要求してない。
実行速度については何も言っていない。
末尾呼び出しを goto に変換できる条件のひとつは、
コンパイル時に飛び先が確定していること。
が、load だの repl だの eval だのがあると
コンパイル時に飛び先をなかなか確定できない。
だれかが上書きするかもしれないからな。
named let は上手い回避策で、
name が escape したり set! されたりしないことだけ確認すれば
飛び先が毎回同じかわかるようになっている。
これは let の scope 内だけを見れば良いから技術的にも簡単。
r6rs は library 内だけ見れば良くなっているが、
代わりに repl が消えて set! に制限が付いた。
213 :
209:2014/03/05(水) 10:43:59.48
>>211 無限回の末尾呼び出しのためには、
呼び出しの前にスタックフレームを削除しなければならない。
が、 JVM ではスタックフレームを削除するには return しなければならない。
R6RS の制限はコンパイラが色々と楽になってるよな。
gotoが速いとか言ってる奴を相手にする必要なし
ナイーブな実装だと goto の方が速いことも有り得るだろうけど、
理屈の上では末尾呼出しと同じだよ。
>>212 飛び先が確定してなくても変換できるよ。
もちろん確定してた方が効率的なコードになるけど。
217 :
デフォルトの名無しさん:2014/03/05(水) 11:50:42.70
トップレベルってなに?
ダークコーナー
219 :
デフォルトの名無しさん:2014/03/05(水) 12:17:26.50
一番外側の式
俺のこと
処理系が用意する語彙は一番外側の式と同じレベルなのか、更に外側なのか。
>>216 例えば末尾文脈で (f a b) みたいな呼び出しがあったとして、
fが定数でないとすると、
- fに手続きが束縛されているか確認
- fの引数の数が正しいか確認
- 呼び出し元の駆動レコードの破棄
- 呼び出し先の駆動レコードの構築
といった処理が必要になると思うんですが、
これって削除できるんですか?
>>212 それは「gotoが実現できない言語」では末尾再帰はgotoと等価ではない
と言っているのかな?
>>222 駆動レコードに工夫できるケースも多いからな。
ときにはまるっきり作らなくて済むことも。
>>223 >>225 「一部は」「ケースも多い」「ときには」なら、
「末尾呼び出しはgotoと同じ速度」は誇大広告じゃありませんか?
特に、駆動レコードを作らなくて済むのは、
呼び出し元が使用している駆動レコードを再利用できるときに限ると思いますが、
どこかで call/cc が使われているとその前提がくずれてしまうと思います。
つまり、実質、「いかなる手続き呼び出しも行っていない手続きの末尾呼び出し」でなければ
gotoと同等の速度が出る末尾呼び出しにはならないかと思います。
>>224 いえ、「末尾呼び出しをgotoと同じ速度にするには、他にいくつか条件が必要」と言っています。
>>226 そういうことなら goto と常に同じというわけではないということは認める。
だけどちょっと反論させてもらおう。
末尾呼出しが goto と同等の速度にならないケースというのは、
末尾呼出しを goto で置換えることが出来ない使い方をしているケースなので、
goto のかわりに末尾呼出しを使う分には goto と同等の速度と言える。
変数の内容が書き換えられるかどうかは set! の対象になっているかどうかを見ればいいだけなので、
(ここでは REPL を考えない) set! されることがないなら変数を手続きが束縛しているか、
手続きのアリティがいくつかはコンパイル時に看破できる。
(goto のラベルは変数ではないので変動することはない。 書換えられることのない変数と同等である。)
その手続きを呼出す箇所でも apply でも使って動的に変動するのでもない限り渡す引数の数ははっきりしてるので、
コンパイル時にチェックは完了できる。
(goto は引数を持たない。 アリティが確定している末尾呼出しと同等である。)
駆動レコードも goto なら常に再利用しているわけだし、
再利用せずに環境を保存しておかなければならないのなら goto では表現できない (か、プログラマが陽に保存する必要がある)。
なんなんだよ!
Lispの実装は簡単にできるとかなんなんだよ!
` とか , とか @ とか聞いてねえぞ!
lispの実装が簡単って構文解析の手間が減るくらいだと思うんだけど
だよな。
特定の規格とか考えずにとりあえずlispっぽく見える最低限のものっていうことならちょっと簡単かもしれないけど。
サンプルが腐るほどあるからそういう意味では簡単だよ
それは言えてる。
資料が多いのもそうだけど、実際にやってみた結果が反映されてるってのは強いよな。
わかる。オモチャを作るのが簡単なだけで、ホンモノ作る大変さは他と変わらないよね。
だってスキャナとパーザが楽なだけで、
その後の型判定、最適化、コード生成、それにエラー処理等は
他の言語と変わらないもの
Schemeの数値はパースするのが面倒だけどな。
Common Lisp の仕様書ってどこで手に入るの?
あと日本語訳ある?
>>227 > (ここでは REPL を考えない)
これです。私が言いたかったのは。
replが存在するだけで処理系は最適化できなくなりますよね。
他に load, eval, call/cc あたりの制限も要る。
あとはまあ、だいたいいいです。
REPLの無いLisp処理系なんて魅力半減じゃないか
CLはREPLが大前提だけどSCHEMEは決めかねてる感じあるね。
R6RSでは無くなっちゃったし、R7RSでも微妙なポジションだし。
対話環境がどうのこうのって ハッカーと画家で読んだ
>>240 REPL無しを前提に最適化を行って実行バイナリ生成とかなら非常に魅力感じるんだけど、開発環境からREPL消えるとLisp系使う意味もうほとんどないよね。
Lispってことに意味があるから大丈夫
風邪引いた
治ったらChickenインストールするぞ
Common LispはJISで規定されているんじゃなかったっけ
REPL より大事なモノはない。CL はちゃんとREPLを仕様にした。SCHEME がREPL を仕様から捨てたのは、本当にがっかりした。
捨てたんではなくてまだ決めてないと解釈すべきだろ。
仕様にREPLがないないなら
RERL無しの高速実装版とREPL版との多様化ができてよろしい。
コンピューターは常に速さを求められる
それに乗っかるソフトウェアもまた常に高速でなければならないのだよばかちん
いや、そこはトレードオフだろ。
同じ条件なら速いにこしたことはないけど、
速さを犠牲にして利便性が得られるならそれもまたよし。
Javaを嫌う理由って主にその辺なんだな
どのへんだよ。
そいつ別のスレでも「Lispは美しい」とか言ってたやつだろ
どこが美しいかは知らないらしい
>>255 どれがそいつかわからん書き方が
ゴニョゴニョ
だいいち、それがかれと、どれほど断定し得るものだろうか?
そうかも、きっとそうさ、そうにちがいめえ、エヘン、そうなのでアール
↑おバカの頭の中
酔っ払ってるのお前?
お馬鹿にもわかりやすいように書いたわけ
そう思えなかった?
バカでも解らないしバカじゃ無くてもわからんw
そりゃ、よほど頭が悪いんだな
おばかの三段論法
「かもしれない、きっとそうだ、そうである」
が、君には自然なのかもな
ばかだから
わはは
決めつけてる時点でおまえさんがパーなんじゃないの?
かもしれない
を
きめつけ
とするあたり、もろに
おばかさんだね
もうやめや、恥さらすだけだから
必死だなぁ、無駄に改行含めてマジで病院いっといで。
>>263 へえ、どうして必死と評価した?
そのプロセス言ってみな
まあ、低偏差値層特有の常套文句相手にしても意味ないがな
ま、おばかの相手はここまで
それこそ必死に中身のない中傷にせいをだしていなさい。、それくらいしか出来ないんだろうから。
あれ?その頭でLispやってるの?
「関数carはリストの先頭要素を取り出す関数です」
とか思ってるレベルじゃない?
そうなら、「なるほどザおばか」
つ 鏡
(defun leap ( n )
(cond
((zerop (mod n 400)) t)
((and (zerop (mod n 4))
(null (zerop (mod n 100))) t)
(t nil)))
ザおばかが書いたコード
おまいらID導入議論に参加しないの?
このスレ的にはどうでもいい
>>266 前提条件を見ることも出来ないお馬鹿をまたまた自己暴露してるな、君。
なにが目的だったか?その文脈を認識できずに,まさに木を見て森をみず、目の前の人参のごとく
「関数leap歯いかにスマートに書けるか?」
たる問題としてとらえてしまっている。
二流どころの投影的解釈そものも。
かんたんにいうとね、
君、お馬鹿さらけだし。
もう、恥ずかしいからやめな
恥ずかしい誤変換を晒してしまった気分はどうだい?
そもそも括弧が大くて煩わしいと言う話で
>>266の小さい子が親のマネするような滑稽なコードを平気で晒す神経がわからん
あんな小学生でも分かるような簡単な例なら括弧の多さは気にしなくていいし
そんな低レベルな話で偉そうにしてたら滑稽に見えるだけ
ところでその糞みたいなleap関数のどこが美しいの?
子がよちよち歩くのを見てバカにするような親はいません
俺は親じゃないし公共の場で親の真似をして迷惑をかけてたら話は別
日曜日にやることがそれだけかい
もはやどれが誰の書き込みだかさっぱりだわ、こういうときこそID欲しいとは思うが、普段はいらね
そもそも見分けたいとも思わない程度の低いやりあいだと思うけどな。
有れば有ったでいいと思うけど、面倒くさいから既にID有りのおーぷん2ちゃんねるに移動しないか
チンチン、マンコにこすりつける仕事なら楽やで
「はい、次の方」
コスリコスリ
「トピュントピュン」
「出ちゃったので今日はおしまいです。股のお越しをお待ちしております」
いいやろ、わはは
>>279 一日にちょっとしか出来んやないか。
病気への警戒とかも考えるとそれなりの出費もあるで。
Schemeにはnilがないんやな
(and (eq nil '())
(eq nil (not t)))
→t
になれてると手間かかるな
この板もID導入されるみたいだしわざわざ分散するような事しないほうがいいんじゃ
あふぃ
おーぷんは気に食わん。
まとめの見せ物じゃないかwwwwwwwwww
こんなところにも嫌儲チョンがおるんか
UGは見せ物になったんだよ
(define nil '())
でおk
>>281
あ、ブーリアンか
ブーリアンか!
このー
>>285 ム板がまとめられることもそうそう無いんだからどっちでもいいんでね
>>288 いや、だめだね
それすると
(eq? nil #f) → #f
となる。
要するにnilに多義性を与えられない
Scheme手習いで登場させているSchemeでは
nilを偽として使い、null listはあくまで
'()としてるな
(define nil #f)
(define t #t)
(define (true? x)
(or (eq x 't)
(not (or (eq x 'nil)
(not x)
(null? x)))))
これは?
293 :
292:2014/03/10(月) 20:52:03.14
今のは無かったことにしてほしい
>>290 実際にまとめられるかどうかより、
まとめありきのその思想がいやだ
むしろ2ちゃんねるが独占してる方が嫌だと思う
にちゃんねるに書き込むってのは便所の落書きを自称するってことなんですよおおおおおおおおおおおお
マッカーシーのLispの頃の理論では構文的な操作で物事を理解するため、
nil はシンボルであって欲しかった。
Schemeの頃の理論になると semantic な概念が導入されたため、
シンボルとオブジェクトは異なる概念であって欲しくなった。
空リストは専用のオブジェクトとなり、シンボルではなくなったため、
専用の表記が導入された。
って理解してる。
なので、Scheme に空リストの表記としての nil は
入れない方がいいんじゃないかと思ってる。
空リストが偽でなくなった理由はわからない。
R2RSには空リストの表記として#!nullがあった
>>297 ごせつごもっとも
ま、.空リストが偽でないことでプログラム書きかためんどくなるが、概念としては曖昧なnilよりすっきりしてる
(while lst
(set! rev (cons (car lst) rev))
(set! lst (cdr lst)))
とかできなくなったのがめんどい
pair?てあんま好きじゃないんだが
cons?のがよくね?
もちろんconsがコンストラクタの略だってことは承知でな
pair?だと逆にどこから出てきたんだよこの馬骨はって思うじゃん
だったらconsやめてmake-pairにでもしろや
って思うじゃん
とりあえずコンストラクタと型判定述語の対応
lambda procedure?
cons pair?
list list?
make-vector vector?
make-string string?
なんてこった。
基本的な型なのにこんなに一貫していない命名だとは。
vector の作成には vector っていう手続きがあるよ。
srfi-1 には make-list っていう手続きがあるよ。
SCHEMEは何か中途半端だ。いっそ、コンス無くしてリストだけにしてもいいんじゃないか?
procedure?だと値を返さないっぽいから
せめてfunction?にして欲しい
もちろんlambda?がいい
組み込みはinternal?とかで
>>305 > procedure?だと値を返さないっぽいから
実際のところ値を返さないこともある。
> lambda procedure?
> cons pair?
proc proc?
pair pair?
にしよう。
処理系のエラー通知の仕組みが知りたいです。
典型的にはどういった実装がありますか。
エラー型のようなものを作っているのでしょうか
>>304 consセルという基幹をはなれて
たかだか表現上のことでしかないリストを中心に据えてどうする。
本末転倒。
miniKanren
面白いね
Reasoned Schemer読んでる
>>308 エラー通知って fprintf で stderr になんか表示するだけじゃない?
エラー型のようなものに関しては
srfi や R6RS に condition というものがある。
エラー通知だかの継続呼び出すだけだからな
スッタクなんか関係ないし
自由を求めて不自由になったお話を思い出すね
人は、不自由を嫌うが、自由を求めているのではない
自由すぎると何もかも自分でやるはめになる
だから他人の作ったライブラリという不自由を探してきて楽をするのさ
プログラムとは特殊化
哲学的な話になるといっきにドツボ低レベルになるのは日本Lisperの特徴かな
哲学的
ドツボ低レベル
日本Lisperの特徴
だってさ
プログラミングGaucheの前書きにこのスレの名前があるのは何で?
>>315 良いプログラムは最低限の特殊化が無理なく行われている。
Gaucheにもquicklispのようなものがあればいいんだがなー
gauche-install に不満が?
ひとつのリポジトリに集約してほしいってことかな?
quickscheme を作ろう、scheme だって企画がちゃんとあるんだからライブラリを管理するのは簡単だ (棒読み)
>>322-232 というか、フォルダ1個コピーすればOKみたいなポータブルにできないのだろうか
えっ
Schemeだけで書かれているライブラリならほとんどの場合はコピーするだけだよ。
ffi
を統一すれば他も統一できそう
>>325 ライブラリ同士の依存性がどうこうとかがあって、
更にマクロがあるので、なかなかそういうわけにはいかない。
r6rs の library があんなんなっちゃった理由のひとつ。
なるほど。
gauche-install はそういう依存性の解決はしてくれないもんな。
schemeで2ちゃんに任意の文字列を書き込むスクリプト作りたいんだけどどうすればいいのかな?
>>331-332 大学によって違うかもしれんが、査読付きで、ISBN付きのプロシーディングの出版があれば査読付き著書にカウントしてくれる
シュプリンガーなら文句なしなんだけどね
University of Utah Technical Report の立場が分からんが、not intended to replace conference or journal publication って書いちゃってるので査読付きでカウントするのは難しいかと
lispって何ができんの?
>>335 他の言語、CやJavaやRubyと変わらないよ
>>335 Lisp使いになると東大女とやりまくれる
その魅力のないデマをしつこく流す目的は?
マジレスの波動を感じる
で結局Lisp族って他のインタプリタより速いの?
最近は古典的なインタプリタは速度競争なんかしてない。
Lispは手でパーサを書き終えるまでの時間が早い
インタプリタだと毎回ソースコードを読み込むところからの時間が実行時間に加算されるわけだから最適化にかけられる時間が限られてる。
プログラムの内容がものすごく計算量の多いものなら時間をかけてでもがっつりと最適化した方がいいけど、そこそこのものなら最適化はしない方が全体としては速いかもしれない。
用途によってトレードオフのバランスを決めるしかない部分なのでLISP族とその他という大きな括りでは比較しようがない。
多大なリソースが注ぎ込まれてる本格的な処理系も個人レベルで作ってみただけという原始的なものもあるわけで、そりゃピンキリだよ。
Common LispならCノ次ぐらいに早いって。ばっちゃんが言ってた。
そのためにはチューニングに手間をかける必要があるのと、
手間をかけた結果からは美しさが失なわれて C と同じくらいの見た目になる。
そのかわりざっとしたプロトタイプを書くのは C よりずっと簡単だし、
チューニングする必要があるのがどこか把握するためのプロファイリング機能や逆アセンブラは充実してる。
プログラミングスタイルそのものとセットで考えなければいけないので、
単純には比較できないな。
346 :
デフォルトの名無しさん:2014/03/18(火) 17:45:21.05 ID:uwWTDmYY
Common LispでもSchmeでもない新生Lispをつくったとして需要あると思う?
仕様を作るのか単なる処理系を作るのかでだいぶ異なる
売りがあれば需要はかならずあるだろう。
需要はあると思う。 規格に合わせようとすることが足枷になるならどんどん新しいものを作ったらいい。
たとえ出来上がったものが未熟であってもアイデアが他に活かせることもあるし、自分の訓練にもなる。
ただ、本気で広く普及するような言語を目指すならそれは結構厳しい道程かもしれない。
既存の言語は現時点で「使い手がいる」「ライブラリがある」「実績がある」というのも大きな利点であって、
(LISP系は他のメジャー言語に比べれば格段に少ないにしても)
新規の言語がいきなりそれを用意できるわけもない。
つまりはそれを上回る魅力を提示する必要がある。
出来なければ元々が方言の多いLISPのことだし、「また俺俺LISPが出たな」くらいのものになる。
ClojureはJavaの資産を利用するという方法でライブラリの部分を埋めたからあれだけの躍進があった。
もちろんJavaの資産をうまく利用できるようにうまい言語設計されてもいるけどね。
言語設計者にとってはすごく屈辱的かもしれないけど、やっぱり物量がある方が有利っていうのはある。
逆に言えばClojure同様に既存の資産にちょっとLISPっぽい外観を与えるだけで有用になるものは他にもあるんじゃないかという希望もある。
Racket最強伝説
>>350 Java資産ならArmed Bear Common LispやKawa Schemeが前からあるし、
そっちの方が規格にも準拠してるそうだから、Java資産ってのは理由にならないんでない?
Clojureが騒がれたのは、大方、PythonやRuby、Haskell周りがWebバブルで浮かれていた
シリコン脳のアホ共が便乗した、とても良い時期に誕生したからだと思うわ
>>352 Clojureの躍進の一番大きなものはLeiningenの存在だと思うがなー
Mavenリポジトリ他から必要なライブラリをぽいっと呼び出して依存関係解消してくれるし、面倒なXML書かなくて済むし
互換性無くして括弧減らして[]使ってとっつきやすくしたのも
>>352 Java 資産を利用できる CL (Scheme) っていうのと Java 資産を使うために設計された Lisp 系言語っていうのは違うと思う。
でも、確かに時期がよかったっていうのは有るかな。
それも狙って個人で作れるものではないし、難しいよなー
Lispって時点で有用性ゼロだろ
そうか
clojureやshenみたいに既存のlispとは違った文法を持ってるlispが増えてくれると楽しくて良い
XSLTとかどっすか
いちおうSchemeの子孫だし
静的型付でデフォルトで遅延評価で型推論あってSTMもあってライブラリも充実しててメニーコアに対応した21世紀の lisp 下さい
数式処理ってCommon Lisp(maxima)しか実用的なのはないのでしょうか?
SchemeにはMaximaに相当するのないのですか?
メニーコア対応の数値計算Schemeとかは需要あるだろうか。
まぁ数値計算屋は保守的だから結局Fortranが使われるわけだがね
(別に保守的なのが悪いとは言わないけど)
CUDAはベースがLLVMになったので、頑張れば
LLVMコードを吐いてNVIDIA GPUで走る処理系はできそうだな
しかしXeonPhiも考えると、結局Fortranに落とすのが一番良いという
結論になってしまうけど
Fortran資産を使えるLisp、というのは
遊びとしては面白そうだ。世界で最も古い2つの言語のハイブリッド処理系や
マジで?
最初のLISPはFortranのライブラリが原型って聞いたことあるけど。
原型っていうか、実装にあたってcarとかcdrの中身に、
それ以前に作ったFortran用リスト処理ライブラリを流用した、
ってことだと思う。
>>358 shenはQiのportable版だから文法に新味はないが、
portable戦術がSteeleの"LAMBDA: The Ultimate Declarative"を思い起こさせて面白い。
というか欧州だからLisp-1の影響なんだろうか。
りりかるlispの7話目の練習問題がわからない
(define len (lambda (x) (if (= null? '(x))0 (+ 1 (len (cdr x)))) ))
じゃないのか
マルチ氏ねよ
>>373 アリサ「関数letを引数としてxを受け取ると、xの要素の数を返す関数として定義しなさい。ただし、引数は一つで、リストのみが来ると考えていいわ」
関数 len を、〜だな。
>>371 > (= null? '(x))
→ (null? x)
だろ。何で手続き null? と '(x) を = で結ぼうとか思った。
377 :
デフォルトの名無しさん:2014/03/25(火) 03:22:43.51 ID:QhbZVHJp
独自用語についてどんなものかと聞かれてもなんとも
ポインタの下何ビットかに、型情報を埋め込むとかじゃね
380 :
デフォルトの名無しさん:2014/03/25(火) 04:21:48.29 ID:QhbZVHJp
>>378 ごめん。とにかく「ポインタ側に持たせる」とはどういうことなのか、ということ。
>>379 なるほど。だとするとワード単位でアドレスにアクセスするアーキのCPUだと無理だということ?
いや、てかx86は8毎でなかったでしたっけ。すくなくないですか
>>380 >なるほど。だとするとワード単位でアドレスにアクセスするアーキのCPUだと無理だということ?
どうして?
むしろ全空間を使いやすい。
オブジェクト配置でどうせアラインしないといけないのだから。
>いや、てかx86は8毎でなかったでしたっけ。すくなくないですか
ポインタ側に持つ即値の型情報だけ必要。
fixed tag
short character
bitmask
など。"その他"はobject側を見る。
384 :
デフォルトの名無しさん:2014/03/25(火) 13:50:05.10 ID:QhbZVHJp
>>377 >>380ですです
たくさんの情報あざーす!
どうやら 勘違い していたようです。
だけど謎が解けてすっきりです!
一歩前進できた模様
385 :
デフォルトの名無しさん:2014/03/25(火) 14:03:19.49 ID:tE9oMSd+
ワードマシンではアドレスが奇数のこともあるのでは
無駄が有っても常に4バイトなり8バイトなりの境界に配置するしかしゃーない。
でもどうせ IA32 用 C 処理系の malloc はだいたい 8 バイト境界のアドレス返すよ。
半端なアドレスでもアクセス出来るけど速度的なペナルティがちょっと有るし、
SSE が特定のアラインを要求したりする場合も有るからな。
ワードマシンと言っても、最近のはアドレスはバイト単位で割り振られてるのばかりでしょ?
アクセスするのにペナルティがあったり、複数命令必要ってだけで。
昔の大型みたいにアドレッシングがワードのみのなんてあるの?
あ、GPUにあるか。
>>387 ワードの読み込みを奇数バイト境界でアクセスできるCPUの方が珍しくない?(シェアベースだとx86でもうまんたいかもしらんけど)
>>389 それは複数命令必要ってことでしょ。それがないとは思ってない。
基本的にLisp実装には殆ど関係のない話だし。
そんなObject配置はしないので。
ワードマシンってバイト単位のアドレッシングじゃないCPU機のことだよ?
ペナルティあったり、複数命令でアッセンブルする必要があろうが、
アドレスがバイト単位で割り振られていればバイトマシン。
たとえば初期のRISC、MIPSとか、もバイトマシン。
ワードアドレッシングね。System/360より前は普通だったから、半世紀以上前か。
最近でもDSPとかには普通にあるけど。
確かにアドレス付けがバイトアドレッシングで、ワードを指す場合はアラインメントが
強制されるアーキテクチャの場合(あるいは意図的にアラインさせて)、ポインタの
下位1ビット〜3ビットをタグに使うというテクもあるけど(CRubyのFixnumとそれ以外とか)、
Lisp実装系のタグとしては、アドレス空間が24ビットなのでアドレッシングの上位1バイトが
無視される、というような場合にその上位1バイトをタグに使う、という奴が多い。
32ビットアーキテクチャの初期にはアドレス空間が24ビットというマシンが結構あったので
そういったテクも使われたりしたけど、アドレス空間が広くなると同時に消えていった。
64ビット化でまた同じようなことが起きるかどうかは興味深いところ。
>>392 AArch64は上位8bitをタグにできるね。
394 :
デフォルトの名無しさん:2014/03/26(水) 17:29:07.50 ID:rDn7FARN
勉強になりますなぁ
じゃ、勉強にならないことをおれが書き込む。
生まれてはじめて英語の原著でLispの勉強始めた。正確に言うとSchemeになるけど。The little Schemerだから。
ネットにpdfあったから無料。
396 :
デフォルトの名無しさん:2014/03/26(水) 17:40:18.04 ID:rDn7FARN
>>395 勉強になりました、、
、、、てかもうすこしはやく知りたかった
なぜなら 先 週 買 っ た か ら で す
でも紙のほうが頭に入りやすい気がする
PDF あるにはあるけど違法ではないかと
続編のThe seasoned schemer
もpdfあった。
だから違法アップロードものでしょ。
日本人ならちゃんと買って読めよ。支那チョンなら好きにしろ。
てめぇはν速に帰れウヨ
403 :
デフォルトの名無しさん:2014/03/26(水) 21:47:18.84 ID:rDn7FARN
旧速が常勝軍と言われたのは今は昔の話
>>401 というか、なんか、オンラインのバージョン管理システムで原稿管理してるっぽい
The Little Schemer 楽しいから終えたら
続編やろっと
pdfで!
/ || :ヽ
┌|(⌒ヽ :|| ..:⌒: |┐ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::|::ヽ.__:):||(___ノ ::|::| │
|:|: .. :|| .. |:| │
:|: .. || ..|| < 日本語でおk
:\ [_ ̄] /::| │
:: |\|_|_|_|_/:::| \_______
all your base はある意味日本語
弱点を無くす、とか言いながら
他の言語によくある、「無」 (つまり nil) が無いのは何故?
Scheme の話?
#f と空リストがあればいらなくね?
空リストは実質的に nil だろ。
(ブール値としての) 偽値とリスト終端を兼任させるのは逆に「区別できない」という弱点になりうるので、
そりゃどっちもどっちな話だ
>>412 In Common Lisp
(set 'a '(hello))
(set 'b 'hello)
(cdr a) → nil
This nil is just the termination for the Cell,
also the empty list as the S-expression
(cdr b) → nil
This nil is neither the teirmination
nor the empty list.
It means No Answer,just "null"
誰かなんでcdrのエラー値がリストとして正当なnilなのかという疑問を晴らしてください
CL は実用的な言語だから仕方ない
>>415 互換性。
初期のLispは未定義値も例外もないからnil返すのが妥当だった。
>>415 (setq a 123)
(cdr a) → nil
のことを言っているなら、そもそも
「リストとして正当なnil」
というところで既に誤解している
そもそも関数cdrが返す値は、あくまでCell(コンスセル)のcdr部であって、
上の例では
「そもそもaはatomでセルじゃないから、そのcdr部が??ポイントするものはなーに?って聞かれてもatomにはcdr部なんてないから答えようがない。
あえていば、ナッシング、無。あえていえばnilやな」
となる。
セルを隠蔽して、あくまでatomとリストの世界でモノを考え、「関数cdrは空でないリストの最初のエレメントを除いだリスト」
とだけ考えると、貴方の疑問が可能となる。
maximaをSchemeで書き直して
scmxlateで変換すれば
Common LispでもSchemeでも動く様になってくれると
最高なんだけどなあ
はあ?
そうか。
The Little Schemerの
8. Lambda the Ultimateではじめて唸った
(lambda (a)
(lambda (x)
(eq? x a)))
勉強中
そっかー
424 :
デフォルトの名無しさん:2014/04/17(木) 08:40:22.37 ID:cixn2QI+
LISP最強と言うけれども量子コンピュータができても生き残れるのか
そういうことは出来てから言えよ
むしろ生き残れない理由が知りたい
427 :
デフォルトの名無しさん:2014/04/17(木) 17:28:03.75 ID:cixn2QI+
理由がわからんからきいてる
怖くないか最強無敵のLISPが未知の概念に対応できるかどうか
Made with secret alien technologyだし大丈夫じゃね?
なんでLispが最強なのか、まだサッパリわからない。
来年には、どういう意味合いでなのか、薄っすらとでもわかるようになるかな。
ただいまLisp勉強はじめて三ヶ月
Lispは最強だが
Lispを扱う人間が最強かどうかは定かでない
量子コンピュータのプログラミングなんて何も特別な事はないんだが
432 :
デフォルトの名無しさん:2014/04/17(木) 22:05:50.49 ID:HKdaCoDt
>>431 そうなのか
全くの無知やからワクワクと不安でいっぱいぜよ
>>431 回路レベルでは違うけどプログラムレベルのレイヤーだと大して変わらないってこと?
そう。
>>429 文法が簡単。古典AIの資料が腐るほどある。
と言うより全ての言語の機能をlisp自身で付けられるからだと思う
そっかー
今でこそ Lisp といえば Common Lisp か Scheme ってのが大多数を締めてるけど、
古典 AI がどうのとか言ってる時代はバリエーション多くないか。
LISP って名前が付いててもぜんぜん違うものだぞ。
いかにLispについての認識が浅かったをジワジワ感じられる地点に来つつある。
さてと勉強しよ
440 :
デフォルトの名無しさん:2014/04/18(金) 14:23:59.13 ID:CQ8lxphP
on lispとsicp読んでみたら両方共翻訳が公開されてるよ
Kindleで正規に読めるLand of Lispから読むことにした。単語帳に自動的に引用元の文が例文として登録されるのがなにげに便利だから。
Lisp本としての本質にまるで関係ない点から選んだ
On Lispはその次に読む予定
LOL買ってみたけど、SchemerでCLを全然知らん俺にはあまり参考にならなかった
LO?(老眼)
Let Over Lambda?
445 :
デフォルトの名無しさん:2014/04/18(金) 22:46:40.29 ID:dS+HYR5/
てs
くじらっくすLisp
447 :
デフォルトの名無しさん:2014/04/19(土) 15:13:08.18 ID:76jJl3rx
Common Lisp のパッケージの概念の起源がいつごろかわかる人いる?
「の」が多くてごめん
450 :
デフォルトの名無しさん:2014/04/19(土) 19:43:32.23 ID:76jJl3rx
451 :
デフォルトの名無しさん:2014/04/20(日) 00:29:50.81 ID:u8Pdqoqb
竹内さんの初めての人のためのLISPよんでるけど、
cellってcar cdr全体のこと言うんだね
schemeでいうpair = cellってとこか
でもggるとcons cellsとでるんだけど
>>451 それはペア (cell) がいくつもある文脈でそういってるだけじゃないのか
453 :
デフォルトの名無しさん:2014/04/20(日) 00:40:39.45 ID:u8Pdqoqb
>>452 そもそもどうなんだ
consってconstructのことだよね
construct cellsだとするとsついたほうがいいような
、、、んーわからん
そういう枝葉末節に引っかかる奴は
プログラミングに向かない
ここに
(1 . 2)で表現されるセルがある時、それは a cell であってcons cellsであるわけ無い。
セルの意味は
car and cdr are cells
ではなく
a cell consists of two parts;first one is the car,second one is the cdr.
セルとは、セルは、などと言いたいとき、英語では
Cons cells are ....So they are...
と表現する場合とか
複数のアトムからなるリストを実体から見るとき、それはconsによって生成された(される)複数のセルのリンクなわけだから、それをcons cellsと表現するとか
ま、複数のセル、セル一般的について述べるときcons cellsといってるだけどろ。
セルとリストの関係をよく考えてないとな
リストからセルを考えるのは本末転倒。セルからみれば
リストなんて、セルのつながりのたかだかひつとつのrepresentationに過ぎない。
セルのつながり、もろにcons cellsは
リスト表現以外にもドット対表現でも可能なわけだ
単なる英語力の問題。lisp理解関係ない。
甘い認識乙
馬鹿な認識乙
clispのfunction-lambda-expression
と同じ事をschemeでやりたいのですが
srfiあたりに似た事できるのが既にあったりしないのでしょうか
defineをマクロで再定義すればいけるだろうとは思うのですが
defineを定義しなおせば3つめの返値はなんとかなるだろうけど、
2つめが厳しいな。
今日は体力切れた
勉強はお休み
463 :
デフォルトの名無しさん:2014/04/23(水) 20:36:18.69 ID:yzmxmTm6
勉強報告スレ
関数を返す関数の意味がわかってきた
そうか。
女はいないけど俺にはLispがある
どや!
どやどや!
バブルの時代で女に持ってた幻想がソゲブである
抱くのは好きでも一緒にいたくねぇ
JITコンパイラが何でCより高速になる場合があるのかわかったけど
コンパイル時にテスト実行を追加したら同じなんじゃないの?
コンパイラ最適化の論文読んでるのですが
domain theory
について手っ取り早く理解できる出来れば日本語の教科書ってないものなのでしょうか
横だけどその本て圏論の理解に役立つ?
そりゃ結構長い章が圏論の基礎に割り当てられてるから。
ただこの手の本は腰を落ち着けてちゃんと取り組まないと意味ない。
トンクス
カルテシアン閉カテゴリってのが圏なのかな。
ちらっと眺めたけどほとんど数学書ですよね。
代数って線形代数ならチョロっと習ったくらいなので自信無いな。
具体的にどんな分野を基礎としているのですか?
>>474のPDF読んでみて。
カテゴリの例が載ってるから。
>>477 JITは実行時情報が豊富なんだけど実際作ると感じるのはやり過ぎると短い寿命のコードの実行速度が遅くなっちゃうんだよね(R3000系のCPUでしかやってないけど)
serverみたいなずっと生きてるコードには凄くよいけど、それでも起動からしばらくは重かったりする。
479 :
デフォルトの名無しさん:2014/04/26(土) 16:52:41.74 ID:dP8sDYOv
クロージャー勉強してるんだけど
http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp11.html の
クロージャー
クロージャーを変数に代入する
のとこで
(defun foo (x) #'(lambda (y) (* x y)))
を定義して
(setq t2 (foo 2))
やると
#<lexical-closure: (lambda (y) (* x y))>
に評価せれることになるらしいけど
自分のCLISPでやると
#<FUNCTION :LAMBDA (Y) (* X Y)>
になってるんだけどなぜ?
これは同義と捉えていいの?
>>479 気にしなくていいよ。処理系に依存した表示になっているだけ。
>>479 俺と殆ど同じ勉強の最中だな
俺はThe Little Schenerの
8. Lambda the Ultimate
でやってるが
readしても同じオブジェクトにはならないから、
規格で定義してなくて処理系依存。
484 :
デフォルトの名無しさん:2014/04/27(日) 21:58:20.13 ID:eoTYk+57
>>479 です
らじゃです ありがとうございます
普段はRacket使ってるんだけど
emacs lisp
でちょっと手の込んだプログラム作ったら
謎な挙動多すぎて
うんざり
Racketの素晴らしさを再認識した
自分の未熟さを棚に上げるお前にうんざり。
lisp-1とlisp-2の違いで引っかかったんだろ
スコープの違いじゃね
Typed Racket どうなん?実用的?それともまだおもちゃ?
現時点では最適化に生かされるわけでもなく、
assert 入れるかわりくらいのシロモノ
RMSはCLでemacs組み直せよ。
Emacs Lisp も、こないだ静的スコープになったとかいう話が無かったっけ?
静的スコープの機能が導入されたってだけで、全てが置換えられたというわけではない。
キーボd-対話で大域脱出が多発するelispでは動的スコープがないと不便。
ローカル変数で*variable-name*を上書きして動作変えたり。
いちいちuwinde-protectで後始末するとか面倒すぎる。
496 :
デフォルトの名無しさん:2014/04/28(月) 00:03:53.12 ID:/t06Ophp
>>495の言ってる事がわけわからないんだけど
デフォルトがレキシカルスコープだと本当にこまるのか?
つ ないと不便
まぁ膨大な量に既存のコードをいきなり変えるわけにもいかんからな。
動的スコープでないと不便ってそれこそ未熟
とまでは言わんが反射的に噛み付くのは犬だな
>>489 普通の Racket よりコンパイル時間がかなり延びて不便
関数を渡す関数の勉強が終わったら、今度は継続だ。
まいっチング
ふぅー、頑張るしかない
頑張るんじゃなくて楽しめ。
503 :
デフォルトの名無しさん:2014/04/28(月) 11:23:15.86 ID:k+aW12Iq
今日はレスが多いですね
>>502 なんか楽しめそうな教材、ねっとでみつけたわ
505 :
デフォルトの名無しさん:2014/04/28(月) 18:10:13.40 ID:k+aW12Iq
509 :
デフォルトの名無しさん:2014/04/29(火) 12:00:24.86 ID:2ahvypeX
>>510 それは現時点では和田訳より悪いという意見もあるけど、
長い文を分割するとかして意訳寄りになってるので、
これから地道に改善すれば日本語としては和田訳より自然になるかもしれない。
和田氏の訳は変に翻訳調の言い回しがあったりすることに違和感を感じてる人が多いみたいだけど、
ちょっと古い専門書を読むと割とこんな感じなので昔のノリで訳しただけなんじゃないのか。
和田氏は確かな業績と能力のある人ではあるんだろうけど、
俺らとは世代がだいぶん違うのは如何ともしがたい。
そっちは、気になるところあったらまとめて、pullリクだして、直したらいいかもしれない。
513 :
デフォルトの名無しさん:2014/04/29(火) 17:34:42.54 ID:gtL4c7jL
自分で処理系作ってみたいんだけど参考になるCの実装ない?
規模が小さいくてできればCommon Lisp系統のもので
515 :
デフォルトの名無しさん:2014/04/29(火) 18:45:12.73 ID:gtL4c7jL
>>514 高けぇえええええええええええええええ
ありがたいけど 高杉っす
>>514 折れも買おうかなぁー
と思ったが高杉晋作やぁ
アスキー出版で一万かい!
和田訳は翻訳調で読みずらいだけでなく
訳自体が間違っているから
>>511 みたく読み手のせいにする擁護が多いけど
>>519 >訳自体が間違っているから
具体的にはどの箇所よ?
ググれよ
多すぎていちいち指摘できんだろ
具体的なソースは示せないってことね
URLを1つ書くだけのことなのに
そもそも日本語が意味不明すぎて
正しいのか間違っているのか判別できない
>>523 これ書かれる度に思うのだが、日本語読解力が足りなくて補完できていない分はどれほどあるんだろうか?
日本語能力が足りないのは訳した人間だろ
読み手のせいにするな
根本的にSICPは簡潔に書かれているのであって平易に書かれているわけじゃない。
日本語訳の文章が意味不明だと思う奴は結局のところSICPの解説書を欲しているのであって
SICPそのものの自力読破はできない手合いだろうよ。
誤訳は実際あるにせよ、それが問題になるほど本当にお前は本分を読んでいるのか?
SICP日本語版が読めるっていう人は
意味不明な文章を既存の知識で補って読んでいるんだろうな
そういう知識のない人には読むのは無理な本
>>527 そんな言い方したら学術書読みたいパンピー全滅じゃないですか〜
翻訳ってのは、原著に書かれていないことまで(訳注を超えて)勝手に割り増しすることじゃないからな。
SICPの最初の一文を和田訳と原著で見比べて、ついでにそこを自分なりに和訳を試みてみるがいいさ。
プログラムというたった一単語の奥深さを、"program"という一単語の意味を正確に理解しているわけではない
日本人相手にどうやって伝えれば良いのか身悶えるがいい
SICP日本語版を批判しているのは、プライドが高くて
理解できない理由が己の技量不足とは認めたくないから、
それを翻訳のせいにしているだけ
で、しばらく待ってみたけど、結局のところ
>>519,521はソース無しに批判してただけなのね
>>529 空想がすぎて割り増しとか書いちゃってるよ
単純に和田の英語力が低いだけだろ
身悶えるがいいwww
で、
>>532にあの一文を翻訳できるのか?
ここで和田訳の日本語を批判してる面子の批評に耐えられるレベルの品質で
和田訳は一文だけじゃなくて
全般的におかしいだろ
とごでも、いいから典型的なヶ所出し欲しいな
「ここ、、変でしょ?和田さん!」
の部分
事例ゼロで話が進むんじゃ
馬鹿だけど頭良さげに振る舞うドアホみたいだし
× とごでも
○ どこでも
教本なんだから要は同じ内容を同じように理解できるかが主目的
訳の正確さは文学でやって、どうぞ
むしろ文学でこそ意訳は許されるが、技術書では可能な限り「そのままの」訳が求められるだろ
さっさと原書読めば良いのに
>>540 俺もそう思う、訳が駄目とか言える位英文読解力あるんだから素直に原文読んで学習すればいいのにって。
マルチになるなあ
ま、いいか
今日、Kindleにsicp.mobi入れた
日本語訳のpdfも見たが、英文見たあとでないと意味よくわからん
英文主体で読む方がよさげ
悪名高い書籍版翻訳は見たことないが
さっさと英文で読めばいいのに
英文読めない人は
ラジオ講座で英語を勉強すれはいいのに
結論は毎回それだ、というかそれしかない
俺も訳は見てないからどっちの味方もできないけどね
翻訳に問題があるのは前書きの部分だろ。
あれは格調高いとかそういうった類のものではなく、日本語になってない。
本文は別に言うほど酷い訳とも思わない。
そのパターンもあったな
あの前書きは酷いよ。
今日、プログラミングGaushe届いた
字が小さい!
文体硬い!
お蔵入り決定!
次の一冊はSchemeでやりたかったけどLand of Lispに変更!
プログラミング Gauche は Land of Lisp みたいにはっちゃけてはないけど、ヌルめの入門書だぞ。
お前はどんだけゆとりや。
>>549 ばかなの?
内容についてはのぺてない
字がちいさい
文体硬い
読めたかなあ
>>550 文字が小さいのは同意するが文体固いか?
Land of Lispとくらべたらそりゃそうかもしれんけど。
ちなみに文字が小さい件はebook版で解消可能かと思っていたのだがPDF版しか出てないとかいう事実の前にオライリー死ねとマジで思う。
(文庫本サイズなら紙で買って自炊で済むがA4だとどもならん>>文字の大きさ)
全然関係無いけど Let over Lambdaと Land of LispってどっちもLOLになって困る
LOL と LoL
Scheme版出てたと思うけど翻訳するかな?
オライリーの本は皆あんなもんだろ、文字サイズ
>>555 おお!LOL、Kindle版の原著しか見てなかったが、書棚のオライリー日本語訳みてみたら
字ちっちゃい!
ありがとう、Kindle
おれはどう書く.orgの復活待ってるし
と思ったけど問題見てみた ちょっと偏ってるかな
>>557 C で lisp を書いてるやつがいないか?
561 :
デフォルトの名無しさん:2014/05/03(土) 00:32:12.60 ID:NUTNzwaZ
初心者な俺の感想
mapchar/mapはお便利だけど
それって小学生が方程式で安易に解を求めるようなものに思える(げ、昔の俺)
俺みたいな初心者はmap無しで地力を養うべきだな
お題スレでのClosure例見ての感想
>>562 あ、理由は簡単にできちゃうから
苦労して楽しむ
>>563 自分でmapやらを定義してみたら?
それはちょっと違うのか?
えーとこれは忠告しても聞かないパターンだな
>>562 スレの636のclojure?
というか高階関数使わないでやる方がお題を解く言語選定の時点で間違いじゃないの?
本当の初心者の内はそれもありかもしれんと思うけど、
さすがに map くらいに自明なものから再構築するのはどうかな。
まあ程度問題だわな。
もう最小lisp作って勝手にやっとけよって感じ
Cちょっと習った人がアセンブラに憧れるパターンに似てる
open-output-fileとか、既にファイルが有る場合の動作が未定義なんだけど
ファイルを上書きしたい場合とか、どうすれば良いの?
>>572 常に delete-file で消すしかあるまい。
処理系依存でいいじゃん
R6RS を使おう!
やっぱり処理系依存しかないのね
それはそうと、r6rsは上書きもできるしバイナリも扱えるし、実用的な規格だな
>>576 R6RS だと追加書込みモードが無いぞ。
方向性としては良いけど細かいところに不備多くて、
結局は処理系依存の機能を使うことになるので、
R6RS だから良いというわけでもない。
RNRSの人たちは、真面目にハイパースペック読んでないんじゃね?
決定されたことに不満があるならともかく、
盛り込まれなかったこと、決定されなかったことは
まだ議論が足りないと判断したから先送りしたのかも。
ファイルの追加書込みモードを仕様に追加するならモード全般の扱いについて一般化したがるのが Scheme クオリティ。
R6RS でもモードについては微妙にまとめきれてない感があるので、一旦更地にして議論しなおすべきだな。
Ocamlの Frama-c に対応するのって
Lispでは何になるのでしょうか
対応するようなって言ってもな…。
静的解析全般をやれるようなツールってこと?
俺も某分野ではかなり頭の良いほうなんだが、
数学や記号処理のアルゴリズムのセンスは
ほんの少し出来る程度
なんだなあ
なに?文系もろだしだって?
どひゃひゃ
でも、稼いだのはプログラム関連で三億はいったんだぞ
ま、稼げるのと頭がよいのは違うんだがな
肝心なことを書き忘れた
頭の良い人が羨ましい
mjkt
> 俺も某分野ではかなり頭の良いほうなんだが、
> でも、稼いだのはプログラム関連で三億はいったんだぞ
無職が語る語るw
>>587 あらら、このスレにもクズはいるんだ
あはは
お前、推理力無いに等しいな
乙
スレ違いで居座る奴って
ワロタとかワラタとかつけないと語れないのな
チンコふりふり、ああいい湯だなぁ
継続で苦戦中
ウーム
そうか。
がっかい
池田って死んだの?
まだ生きてることになってます
つーかスレ違いだってばさ
596 :
デフォルトの名無しさん:2014/05/08(木) 06:36:45.82 ID:YMmlCcBR
大作いつ死ぬの?
三億の人ネット知ったばかりの小学生みたいになってる
>>598 意味不明
低偏差値層の書き込みはどうしてもいつも同じパターンだな
さてと、稼げもしないクズのくせに
あはは
Haskellスレでやれ
あれだな
三億といっても.15年で割れば一年当たり大した金額ではない
それで、三億三億と書いてる奴って
よほど金にならないプログラマー?
稼ぐには信用が大切
頭よいだけじゃ駄目なんだよ
おれなんか、優秀な連中に
「がんばってね!」
といいながらオッパイ吸ってたからな
わはは
さてと今日はlambda式での再帰の勉強
あのね、リスプ系は頭いいかと思ってたが
墓もいるんだな
あはは
墓に入りなさい
語彙少ないねこの人
>>474 だいたいわかったので
CCCで遊んでみたいのだけど
この文献で参照されてるOCamlで遊んだらいいのだろうか
Shenあたりで同じ事できないのだろうか
病人に触るな
>>581-582 OpenCVが頻繁にインターフェイスを変えてくるので
2年前ぐらいのOpenCV使ったプログラムはコンパイルできない事が多い
なのでOpenCVのインターフェイスをFrama-cみたいなツール使えば
自動生成できないかと
>>607 病人あるいは、単に朝鮮人なのかもな。
ウリナラファンタジーなんだろうなあれが。
発音はユニフィケーションではまいか
>>610 卒研で、HaskellでWAM作った俺は勝ち組だな…
613 :
デフォルトの名無しさん:2014/05/08(木) 22:42:57.46 ID:SsHMLBYd
久しぶりに来たらめちゃ荒れててワロスw w w w w w w w w w
まあ、レスできずにいきなり偏差値とか学歴とか言い出すいつものパターンな訳だが (w
>>614 はあ?
レスできずに?
おまえ、低学歴だな! あはは
レスすべき主張がないものにレスとは
そうだとしてしまい悦に入る
そういう「普通にお馬鹿」がおおすぎるな
みんなで思えばそうなんだもん
そういうレベルじゃまともな創造はできまい
あ、
>>605きみ、マジならばかすぎ
>>607これ、典型
>>609これは重症、民族差別にまで拡大させた
これはら結論のみの宣言であり、かつ、それは以下の
構造をもうだろう
そうだとしてしまいまいたる恣意に押されて
そうありあることを、そうであるとしてしまう
というお馬鹿は信仰宗教、ないし傲慢なる形而上学の
発想と同じものだな
ま、もう一組、その思考様式は
精神病者と低偏差値層によくみられるんたがな
ここでの実例は殆ど後者の組だろ
前者の組だと、彼らなりの理屈をつけるものだが
ここの書き込みはそれさえない
わははははははは
そのレベルじゃ模倣か単に演繹的な思考しかてきんだろ?
ま、貧乏に過ごせ
さあて、頭の悪い貧乏人を横目で見ながら今日も勉強するかのぅ
今日は継続やでぇ
今日の標語や
チンチンもそそり立つ俺様やけど
実るほど垂れるキトウかな
どや?勉強になったか?
「貶め方」っていうのは、まさにその人の価値観が出るなあ。
性的に劣った存在であることがマイナスだと思えばそういう侮蔑の仕方をするし、
また、社会経験を積むことに価値を見出す人は「世間しらず」
「いい年で幼い行動」などと言って人を非難する。侮蔑こそ己を晒す行為なんだな
>>619 ほんとそれ。
>>616はどんだけ学歴コンプレックス持ってんだよ…。
中学生が必死で背伸びして書いたような痛々しい文章、
これはなかなか健常者には書けるもんじゃない。
恣意w 形而上学のw 思考様式w 演繹的な思考ww
>>620 きみ、低偏差値層だろ?
意味もわからずに単語並べて馬鹿まるだしじゃないか。
どこの三流大学だか知らんが
リスプ系やってる割にひ科哲の教養ゼロに近いな
でも悔しいから書いちゃうか?
おまえさ、国会図書館に著作ある?
答えてみな
>>620 というか、ここまで無教養だといわゆるニートの精神病かい?
恣意、思考様式、形而上学ていどの
殆ど知的日常語に近い語に凄いアレルギー反応だな
きみ、おバカの告白してしまったな
久しぶりにDQNと言うものを見た気がする、芸風が古いというか。
Lispの選民思想の弊害かな?
> おまえさ、国会図書館に著作ある?
ワロタ
馬鹿がlisp齧っても馬鹿は直らないのにね
リスプと書いちゃう人はだいたいアレな感じ
リスプエイリアンが喋ってると思えば意外と
629 :
デフォルトの名無しさん:2014/05/10(土) 00:22:24.04 ID:gFecByos
はいはい質問質問
+ って引数が可変なわけですけど、
処理系ではどうやって解釈しているんです?
つまり引数の数はVMへのコンパイル時にチェックしますか
それとも実行時にチェックしますか?
リストだから、引数の数は1個じゃないの?
まあ、処理系依存なんだが、だいたい dissasemble するとわかる。
とりあえず clisp の場合。
[1]> (disassemble #'(lambda () (+ a b c)))
{中略}
0 (GETVALUE&PUSH 0) ; A
2 (GETVALUE&PUSH 1) ; B
4 (GETVALUE&PUSH 2) ; C
6 (CALLSR 3 55) ; +
9 (SKIP&RET 1)
[2]> (disassemble #'(lambda () #'+))
{中略}
0 (CONST 0) ; #<SYSTEM-FUNCTION +>
1 (SKIP&RET 1)
前者はコンパイル時に引数の個数が決まっている
(CALLSR の第一引数が+に渡す引数の数)。
後者は引数の数を確定できないので、
#<SYSTEM-FUNCTION +> という関数を返している。
この関数が呼ばれるときは他の &rest 付き関数と同じ扱いになる。
>>629 コンパイル時です。SUBRの+は引数の個数を確認してスタックから引数をPOPします。
エイリアンはもっと頭良さそう
>>629 ナイーブな実装だと実行時になるんじゃね。
Common Lisp はよく知らないけど Scheme の場合は + を評価して手続きを取出すまでアリティはわからないわけだし、
評価はもちろん実行時なので実行時にならないとわからない。
そういう原則を踏まえた上でコンパイル時にチェックできる場合を特別に扱う最適化を入れる感じ。
ティンコもそそり立つ俺様やけど
実るほど垂れる乳首かな
「プログラムが実行されるとデータのみならず関数においても自分自身を書き換えながら処理をすすめ、処理が終わってもプログラムは書き換えられたままになっている。次にそのプログラムを実行するときは、その書き換えられた状態から始まる」
という事が(限定された意味であっても)できるんだな。
今日、Closureの勉強した後で、「となると・・できるんじゃね?」
と思ってやってみたらできましたなあ
うーむ、Schemeの勉強はおもしろいぞ
こりゃしばらくはナンパよりSchemeの勉強だ
strictness analysis
って無限ループがあるかどうかを
判定しているだけって事でいいの?
違う。引数が必須かどうか判定してる。
コンパイラの最適化でやる到達可能性なんかと似た概念。
639 :
デフォルトの名無しさん:2014/05/13(火) 09:13:01.18 ID:NG4CQrCJ
cで処理系作っているのですが
VMの汎用レジスタorスタックって
なくてもcのローカル変数で代用できますか
またはそのような実装はありますか
とりあえずラッパしとけばいいんじゃね?
>>639 できるけど、
スタックには大きさの制限があるし
VMループから抜けると処理は再開できないしで
あんまいいことないよ。
そうか。
643 :
デフォルトの名無しさん:2014/05/14(水) 22:34:00.53 ID:vA2Ser57
この地味に
そうか。
ってのむかつくんだけど
なにがむかつくってスレ開いて新着レスキタ - .∵・(゚∀゚)・∵. - ッ!!とかおもったら
そうか。
だよ
結構イライラするからやめてくれ
でまた
そうか。
だろ?やめろ
そんなことないよ。
せやろか?
scheme-reports 読んだりしてる?
関数の引数の順番は
(f 継続 出力値のポインタ1 出力値のポインタ2... 入力1 入力2 ...)
で共通化してほしい
へ?
((f 継続 出力地のポインタ) 入力)
ワシはアナルにプチトマト入れたり出したりしとる
ごっつう気持ちええで〜
そうか
そもそも継続って何ですか?
プログラムを実行していると、関数呼び出してから元に戻ったり、
ループの先頭に戻ったりするでしょ。
その戻るために必要な「状態」のこと。
継続はsetjmp継続呼び出しはlongjmp
ただしsetjmpした環境を持ちまわればどこでもlongjmpできる点のみが違う
要するにコストの高いsetjmp
大抵の実装ではcall/ccを呼んだ時点でその継続はヒープに移動するところがsetjmpと違う
以後全てはヒープに移動した継続を自動的に参照する
setjmpはcall/ccだよ。継続保存。
jmpbufが継続ね。不完全ながらも。
しかしCは凄いな。
当時よくこのレベルでの抽象化を思いついたもんだ。
非局所脱出は別に珍しいものじゃなかったでしょ
まあライブラリでやっちゃったのは凄いとは思うけど
C自身でポータブルに書けるなら凄いかも知れんが。
シグナルハンドラーからlongjmpとか結構凄い。
C++ だと Boost.Context もあるよ
667 :
デフォルトの名無しさん:2014/05/28(水) 12:55:28.88 ID:X/2WS0UX
だれかcで処理系作ったて人コード見せてほしいっす
見せたら俺Lispじゃなくなってしまう
大学の演習で簡易版を作らされたから、ネットにいっぱい転がってるはずなんだけどな
>>667 Schemeだとcallccで面倒だけど、普通にLisp1系なら1週間有れば趣味でも実装できるっしょ?
教科書も参考事例もなしに完全に自力だけで再発明しようとするとけっこう苦労すると思うぞ
たとえばマーク&スイープ法を自力で思いつける人ってどれだけいるだろうか?
>>671-672 どうして既存のものを参考にしない前提なの?
趣味ならそういう縛りでやるのも勝手だけど、
偉大なる先人と比べたら大抵の人間が無能なのはあたりまえじゃん。
それでも先人より先に進めるのは先人の成果を利用して学ぶからだろ。
>>671 普通にゴミ集め書いたら何もマークアンドスイープにしかならんのじゃないの?
んでもってがっつりと時が止まる所で悩む
最初に見た本に書いてあったのでなんとも
>>673 わし、その大多数のなかに入ってないねん
677 :
デフォルトの名無しさん:2014/05/29(木) 19:38:04.78 ID:KpyrHqAC
処理系のデータタグについて「データに持つ」と「ポインタが持つ」のでは速度にどれぐらいの差がでるのだろうか
>>676 なら成果をどんどん発表してね。 期待age
>>677 かなり状況に左右されるんじゃねーの。
int 幅にポインタを格納してもどうせ何ビットか余るわけだし、
余った分を活用するのは合理的に思える。
>>674 C++ とかから流れてきた人は自然に参照カウンタ使いそうな気がする。
ポインタにタグ付けると玄人っぽい
lisp処理系を作りたくなったけどGC面倒臭いな
前に書いたときはmark&sweepを自力で書いたけどstackにpushして一時的に保護したり面倒臭すぎる
もうboehm-gc使ってみようかと思ったけどまた自力で書いたほうがいいのかな
書けるものは全部全部自分で書け
トレードオフの問題じゃないか。
どちらかが良いという問題ではなくて、それぞれのメリット/デメリットを考えて、
自分がやろうとしていることにどちらがマッチするかで考えればいい。
面倒くさいとわかっていることに手を出して途中で飽きるくらいなら Boehm GC を使った方がいいと思うけど、
面倒くさくてもそれは自分でやらなきゃ意味がないと思うならやればいいんじゃないの。
最初は Boehm GC を使って余裕があればあとから独自の GC に置き換えるというのでもいいし。
自分で書くとしたら一時的に使ってる値が
片付けられる問題をGC側が解決してくれるようにしたい
それだとmark&sweep以外のアルゴリズム使わないとだめなのかな
>>685 ちょっと読み違えているかもしれないが。
smalltalk-80の実装は、
メソッド呼び出し内では参照カウントで管理して、破棄できるものはreturn時に破棄、
システム全体はmark&sweepという併用だった。
参照カウントだけだとループがある時に問題になるので。
LoLやべぇ
haskell共和国で腹筋崩壊した
Haskellは活気があって羨ましい。
でも、あれは完成形じゃない気がする。
だから、まだ land of lisp の復興はあり得ると思うんだ、何が必要かは分からんけど。
land of lispのほうのlolはhaskellを持ち上げてたけど
let over lambdaのほうのlolはhaskellをあまりよく書いてなかったね
それより自作のlisp処理系にキーワードを付けようか迷う
lisp-2だからcommon lispに合わせて付けたほうがいいかな
純lispのアトムってTとNILだけ?
691 :
デフォルトの名無しさん:2014/06/01(日) 00:44:17.67 ID:D/HvdSEw
>>692 >>690 tとnilとくればSchemeではないので
(defun is-atom? (x)
(not (listp? x)))
だとうまくいかない。nilは空リストを意味してしまうからである。つまり
「リストではないものはアトム」とはいえない
どうしてもいいたいならば
「空でないリストはアトムではない」とはいえる
そうではなくて
「(コンス)セルではないものはアトム」である
(defun is-atom? (x)
(not (consp x)))
逆にSchemeでそれがアトムかどうかを判定させるには
(define is-atom?
(lambda (x)
(not (pair? x)))
ではうまくいかない。空リストが考慮されてないからである
それゆえ
(define is-atom?
(lambda (x)
(and (not (pair? x))
(not (null? x)))))
Common Lisp系の場合はnilの特異性(nilはアトムでもあり
リストでもある唯一のシンボル)のためアトムとリストの対応ではなくアトムとコンスセルの対応を基本に据えないと見通しが悪くなる
× listp?
○ listp
>>693 それは
t,nilの2つにくわえ
(nyotai naoko ikuko ayako beautiful sexy erotic )
があればいいんじゃないか?
>>608 OpenCVのインターフェイスが頻繁に変わるのは政治的な理由があると思う
OpenCV本家のpythonバインディングより出来のいいバインディングを誰かが作ると
毎回インターフェイスが変更される
この「技」を潰されちゃうと
開発者がへそまげてOpenCV自体が消える可能性ある
common lisp寄りの処理系作って[るた]人いる?
コンディションの実装糞面倒だからreadとevalとraiseの三種類で誤魔化そうとしたけど
handler-case書けなくなるし困った
こういうのどこで妥協するかが一番難しいと思った
そうか
この地味に
そうか。
ってのむかつくんだけど
なにがむかつくってスレ開いて新着レスキタ - .∵・(゚∀゚)・∵. - ッ!!とかおもったら
そうか。
だよ
結構イライラするからやめてくれ
でまた
そうか。
だろ?やめろ
無論・・・
そうか
せやな
「そうか」とか「せやな」とか言うくらいならLISPと関係なくてもいいから雑談でもしてくれた方がいいと思う。
せやろか
そうかな
Swift どうだろね、REPL あるようだし、ベターjavascript と思えば lisper にも受け入れられるかな?
うにっくすでつかえるんか?
オランダの飾り窓でつかえるんか?
スズキかたるなら佐藤さん語れや
Listしか使わないなら
file-name.xxx
でいいのだけど、いろんな言語を相互に呼び出したりすると
どうしても
file_name.xxx
に統一したくなる
fileName.xxx
は論外
>>709 Mac はUNIXだし後は何言ってるかさっぱり分からない
>>711 Mac は Unix かもしれないが、 Unix が Mac であるとは限らないだろ。
任意の UNIX で使いたいのかよ、むちゃな
リスパーってSwift使うときはリスプをSwiftに変換するプログラム作るんでしょ?
Swiftを使う必要が出来たらそうするけど多分無いわ
>>714 今Lisp -> Obj-CしてるんでSwift別に必要ねぇ感じ。
SwiftでしかiOSコード書けないなら捨てだろうし。
それってNuのこと?
それとも自作?
まだ基礎を勉強中なのに継続の勉強ばかりしていたら再帰の基礎が崩れた
ウーム
また、やり直す
英語の勉強にもなるし。
そうか。
勉強すると、他の勉強の基礎が崩れるの?
FIFOなんじゃね
たとえ無限ループだろうと完走を祈る
fifo頭か、そうかもな
ま、続けよう
>>722 足し算思考だとそうなるね。
掛け算思考なら相乗効果で捗るが。
足し算なら問題ないのでは...
ムム
足し算なら俺でもできる
(+ a bc)
だな
おお!勉強の成果だ!
n次元空間のベクトルの和や積ではどうだろうか?
ウーム
とりあえずチンポ弄くってから考えてみる
>>727 たまに1以下の数字が乗じる事があるんだよね
プログラミング言語の実用性を実数部に、ハッタリ度を虚数部にした複素数とし、和と積を考えるとどうだろうか。
COBOL: 1+0i
足すごとに実用性が増すが、掛けても何も変わらんw
ピタゴラス学派かよ
736 :
デフォルトの名無しさん:2014/06/13(金) 23:09:51.86 ID:IVqCc1OG
一度は多く概念に怯え逃げたが
再び戻って参りました
どういう概念に怯えたの?
それとも概念の数の多さに怯えたの?(そんなに、概念多いかなあ)
60年間のプログラミング言語のパラダイムすべてを包括しているというツギハギだらけの概念に怯える
Lisp/Scheme に特有の概念っていうのはもうほとんど無いだろ。
同図像性とか
S式くらいかな。
マクロがすべて悪い
>>740 それだとXSLTがある。というかもう使われて「ない」のかな?
744 :
デフォルトの名無しさん:2014/06/14(土) 02:12:28.49 ID:/t1vIzIu
The Little Schemer を読み終えたら次は何を読むべき?
読み終えたの?
リトルスキーマーはCELLとListの差に触れないだろ?
そこがなあ、一冊目にやるのはどうなのか
二章か3章で欄外に
(car (cons a b)) -> a
(cdr (cons a b)) -> b
と注記はされているけど
それは
What is (cdr b)? where a is 123.
の答えが
No answer. because b must be a non-empty lisp
としているので、
actuallyと注記がある
だったと記憶している
細い記述は本文とは異なる
こんな事!でしたねえ、、、、です
リトルスキーマはSchemeらしく継続までやってるのはいいと思う
でもなあ、最初はCommon Lispではあるけど
「LIST遊び」のほうがいいような気がする
CELLもちゃんと始めからやるし
セルのつながりとしてのListという事を基礎に据えられる
因みに俺はLIST遊びからリトルスキーマーをやった口
あ、ポスト、リトルスキーマーか
LIST遊び (Common Lisp
プログラミングGauche (Scheme)
あたりは?
>>746 コンスセルとリストの関係の話とか、そんなに腰を据えてやらなきゃならないほど難しいことか?
それをどう使うか、使えるのかっていうことを示さないと「それで?」ってなるだろ。
「あ、さっきのやつはこう使えるんだ〜」っていう順序がきちんとしてるのが Little Schemer じゃないか。
わからないときは戻って読み返せばいいんだし。
高校生のときを思い出してみろよ。
行列を方程式に対応付けて機械的な作業で解いたり計算量を減らしたりして物理計算が楽になったりしただろ。
グラフィックの計算に使えるぜーとか、そういうの無しで延々と行列の定義を覚え続けて頭に入るか?
実際に使われる場面を見て、なるほどこういう風に役に立つのかってなる方が学びやすいと思うんだよな。
>>748 腰を据えるではなくて
基礎に据える
あのな、いくら読み返してもコンスセルの話はでてこないだろ
関連して
(car (cons a b)) -> a
(cdr (cons a b)) -> b
が注に出るだけ
あくまでアトムとリストの対比の世界でものを考えることになるのがリトルスキーマー
ま、そういう方針の本なんだな
あくまで、「初めてやる本でしょ?」だろうから
そのうえで、ま、よく階梯を持つと思うよ。良い本です
atomとリストのなかでものを考えているから可能となってしまう
不適切な考察がここやCommon Lispのスレで何度か見かけた
コンスセルの連鎖関係がリストの実体であり
リストはあくまで表現にすぎない
と思えるかどうかだな
750 :
デフォルトの名無しさん:2014/06/14(土) 08:47:08.24 ID:Rm8HxN97
"An Introduction to Scheme and its Implementation"って結構いいな
>>749みたいな話もちゃんとしてる
>>749 > 腰を据えるではなくて
> 基礎に据える
はあ?
腰を据えるの意味調べてこいよ
>>752 頭悪すぎる
しかし、開き直るとは思わなかった
>>753 腰を据えるの意味と、どうおかしいのか書いてみな
胡椒と酢で和える とても美味しい
新玉ねぎのサラダうまいぞ
新タマネギは薄くスライスして花鰹振りかけて醤油で食うのが好き、甘くて美味しい。
Lispの括弧もタマネギみたいで好き
(((((())))))
あれ
The Little Schemerで number?は基本関数だからatom?などと同じように定義できませんという記述があるんだけども、
できますよね
atom?に関しては注で
(deifne atom?
(lambda (x)
(and (not (pair? x))
(not (null? x)))))
とされてますし、number?は
(define number?
(lambda (x)
(and (not (pair? x))
(not (symbol? x))
(not (string? x))
(not (eq? x #t))
(not (eq? x #f)))))
でいけると思うんですが、間違いですか?
761 :
デフォルトの名無しさん:2014/06/16(月) 13:08:24.18 ID:RIOX5DV+
やたら冗長な
>>760 data domainがclosedならokですね。
それにしたってその定義はいろいろ足りないけどな
(number? #\A) とか
764 :
デフォルトの名無しさん:2014/06/16(月) 21:32:39.60 ID:SQhI/GVo
813 名前:デフォルトの名無しさん[sage] 投稿日:2014/06/15(日) 16:48:31.43 ID:ff3DF+/U
ぐぐってみたけど、shi3zさんは回路図とブロック図の区別がついてなさそう。
http://enchantmoonstrokes.appspot.com/#52021019350840f7400ea0bc150d6562d0cb0e30a35b740ca しかし突っ込みどころが多すぎてなかなか楽しい図だなw
814 名前:デフォルトの名無しさん[sage] 投稿日:2014/06/15(日) 17:16:40.51 ID:BWS0xqiu
なんであんなトンチンカンなおっさんが未踏に採択されたのか謎
815 自分:デフォルトの名無しさん[sage] 投稿日:2014/06/15(日) 17:29:15.50 ID:e7vXG3hh [1/2]
未踏とかLispインタープリターが作れれば採択される
ゴミLisperの集金プロジェクトだし
819 返信:デフォルトの名無しさん[sage] 投稿日:2014/06/15(日) 22:21:40.55 ID:QhTFjgfY
>>815 お、ゴミがいたw
820 自分:デフォルトの名無しさん[] 投稿日:2014/06/15(日) 22:32:13.37 ID:e7vXG3hh [2/2]
未踏は湯浅とかいうゴミが特に酷かった
自分でPMやって採択してスーパークリエーターになってた
早く死ねばいいのに
821 名前:デフォルトの名無しさん[sage] 投稿日:2014/06/16(月) 16:35:52.76 ID:7he4xSgp
自分が単位を落としたのをLispのせいにするようなバカは、そのバカのせいで早く死ぬだろうねw
822 名前:デフォルトの名無しさん[] 投稿日:2014/06/16(月) 21:23:47.94 ID:AQ6Cimo3
単位を落としたのは100%教員のせいだよね
823 自分:デフォルトの名無しさん[sage] 投稿日:2014/06/16(月) 21:24:24.61 ID:dyNK9zKr
湯浅って自分でPMやって自分で天才とかやってて
小保方と同類だわ
湯浅さんはCommon Lispの世界初の実装者だろ。
向こうのリアルハッカーたちが唖然としたほどの天才。
イチからのフル実装としてはでしょ。
既存実装のCommon Lispパッケージはたくさんあった。
ネイティブコンパイラ付きでCで実装してあって
ポータブルですごいと思うけど。
今となっては税金にたかる
時代遅れの老害でしかないわな
>>765 その程度で唖然とするとか
リアルハッカーじゃなくて
リアルバカだろw
今どきの人にはネイティブコンパイラとかCとか言われても
当たり前のことで、凄さは伝わらないよ。
向こうのハッカーが湯浅の話をしているのを聞いたこともないし、
完全に過去の人だね。
765って皮肉でしょ?なんでマジレス
湯浅三への蔑み、なにが動機?
ごく一部の人がLispの仕事に就職して
Lispの仕事は需要あるみたいなこと言ってて
この人大丈夫なのって思った
核融合の仕事は需要あるとおなじじゃね?
>>772 就職してるのなら需要あるは事実だろうよ。
たくさんあると言っているわけじゃないんだろ?
Lispの仕事にありつくのはごく一部だけで
供給過剰だから
だからなに?
供給過剰のLispプログラマを
これ以上生産するべきではない
エセlisperの選民思想持ちは中高生かな
>>777 このひと、別スレでも書いてる人?
精神病じゃない?
精神病なのは自作自演で
天才プログラマとかやってる
湯浅ってバカだろ
あらまw
,,-―--、
|:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::::::::::( 」 < たくさんあると言っているわけじゃない
ノノノ ヽ_l \______________
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
いつもの人だろ相手すんなって
湯浅みたいバカは世界中探しても
他にいない
さよか
さよで
なんか無能な人のやっかみについて聞こえる
正しくその通り
無能でも無害ならいいけど
湯浅は無能で有害だからなあ
何処がどうしてを指摘しないのなら戯れ言でしかないよ
税金にたかる蠅なんだわ
久しぶりに来たら変なのが湧いててワロタ
おまえらは湯浅ってゴミカスのことどう思ってんだ?
795 :
デフォルトの名無しさん:2014/06/17(火) 20:52:30.13 ID:2BmltRy+
2ちゃんから人が減ったけど、まだ戻ってくることあるんだなw
未踏ってGaucheとかmrubyのイメージしかないけど
その湯浅って人は具体的に何やらかしたん?
PMでかつスーパークリエーターは彼一人
天才といえば苫米地さんだろ?なんでお前らわかんないの?
>>796 ゼロからの実装としては世界初となるCommon Lispである
Kyoto Common LisPの主たる実装者の一人だろ
特徴はコンパイルするとC言語ソースを吐き出すこと
ANSI以前のもので、今はANSI Common Lispのサブセットという位置付けか
KCL, wnn, gmw 当時の京大は輝いてた。
KCLはGCL(GNU Common Lisp)になってからANSIフル実装してる。
としとると、おばかになるんだな
カミソリと言われた俺もコアラのようになった感じがする
ていうか息するエキスパートシステムと化していくようだ
gclってまだcltl1の範囲じゃなかったっけ
ManKaiとかembeddedとかkclからの派生色々あるけどどう違うんだろ
このスレと関係ないけれど
最後にgoto文使ったのはいつだろう
まだチンたんもそそり立ち
「エイトまーん! いや、エイトビットオ、すごいだろ?」
なんて言ってた頃か
VM書いたことないんだな。
タイトループでgoto使うのはチューンナップの常套手段。
俺は立場上、gotoなんか使わん!
正義の構造化戦士である
戦死したけどな、わはは
>>804 途中で挫折したからどこまで実装したかも定かで無いはず。
>>806 > タイトループでgoto使うのはチューンナップの常套手段。
化石みたいなローカル常識わろた
インタプリタの実装だろ。
化石じゃなくて普通に現役の話だし、Labels as Valuesを使ったりとか、
ごく定石的なテクニック。
VM実装に限定した話であれば、
goto文を多用するカリカリ・チューニングも必要悪だけど選択肢の一つかな
ただ自分なら、そういったコーディング・テクニックを駆使するパワーを
VM命令セットの改善やVMコード最適化にまわすけどね
goto文は自動生成するもの
>>806 そういう思想は何とかの開き直りそのものだな
あ、コーディングルール絶対派(≒バカ)だ。
上流という名のバカか
>>810 アセンブラレベルでチューニングすると言うならまだしも、今時 goto でスパゲッティ作ってチューニングした気になってるとか、老害乙
反論するならちょっと具体例あげてみなよ
インタプリタの実装すら知らないバカ乙
>>817 そういうのはコンパイラのコード全部読んでから言わないと駄目だとおもうな
gotoを集めてキミだけのインタプリタをつくろう!
>>818 で、具体例のひとつも出せないの?
>>819 何故にコンパイラのコードなの?
生成されたコードで良いのでは?
Labels as Valuesって、ググるためのキーワードは出てるにもかかわらずコレじゃあ、
成長の見込みは全く無さそうだがね。
具体例出した途端黙りかよ
>>822-824 switch より速くなる例書いてみなよ
そもそも、そのページいつ作られたのか知ってるか? w
専門板のやつらを煽って有益な情報を出させるやつか
どうせ出てこないだろ
10 年以上前のページをどや顔で出して来るようなレベルだし
まあそのページはスゲー懐かしかったわ w
lispのgotoの話をしているのかと思いきやCのgotoの話をしているお前ら
いい加減スレ違いと気づけ
> switch より速くなる例書いてみなよ
まずはてめーがその偉そうな口を叩けるだけの証拠を示せよタコ。
Schemeにしても何にしても、インタプリタコア部分の実装方法が10年やそこらで
そんなに変わるもんかw
どや顔で「古い」としか威張れないバカのレベルなんざ知れたもんだ。
>>829 はあ?
> タイトループでgoto使うのはチューンナップの常套手段。
って書いた奴が実例示すのが筋だろ。
出せねーなら、おとなしく ROM っとけ。
gotoラベルを配列に突っ込むとかgcc拡張なら割と良く見る>>バイトコードインタプリタ
でもそんなんだったらディスパッチ部分を素直にアセンブラで組めと思わんでも無い
gcc くらいに高度なコンパイラになるとどんな風に最適化したコードを吐くか予測するのが難しくて、
癖をよく知ってないとチューンナップのつもりが逆効果ってこともあるし、
かといって最適化をオフにすると他の箇所全部が遅くなるわけなんで、俺も
>>831 に一票。
実例としては CLISP とか Gauche とか YARV(ruby) とかがあるね。
labels as values と switch を切り替えられるようになってる。
Cコンパイラは switch でのディスパッチを最適化しきれない。
switch(*ip) { ... } を実行したとき、
*ip に 対応する case ラベルがなかったら、
何もしないで switch 文の外に出なければならないという仕様があるから。
*ip が範囲内かチェックするためのコードが必要になる。
なにをいまさら
本人はとっくに知っていて
>>834は本人ではない可能性が・・・?
・元々はみちつ餃子は二人いた
・若年性アルツハイマー
・片方がなりすまし
実際になりすましがあったから洩れてるのは知ってたけどネット上でこうも堂々と見れる状態だとは思ってなかった。
っていうか、おまえら知っててなりすましが有ったのが一度だけっていうところに優しさを感じる。
840 :
デフォルトの名無しさん:2014/06/22(日) 23:17:30.53 ID:sY6SZ6hh
unboxingはかなりめんどくさい。
C言語でlisp処理系の実装で文字列ストリームをtmpファイルを使って実現するのってまずい?
/tmp/hogehogeみたいな場所に置けば楽に出来そうだと思ったんだけど
なんでファイル生成なんて重くて時間のかかる処理を効率的であるべき箇所に盛り込もうとするかな
なんでマズいかもと思うの?
文字列の処理は頻出するので性能面では著しく不利になるのは確か。 桁が違う。
実装した処理系を文字列処理にはあまり使わないと割り切ることが出来るなら手っ取り早い実装方法として選ぶのも有りと言えば有りかな。
ただ、そもそもの話として本当に一時ファイルを使う方が実装が簡単とは限らないよ。
OS やらランタイムライブラリのおかげでファイル操作に関しては普段は高レベル API を使えるけど、
立ち入ったことをしようと思うとなかなか大変なこともあったりするよ。
うーんreadやprintでFILEをそのまま使う書き方をしてて
そこを書き換えずに出来ると思ったんだけど遅くなるし駄目か
CRT の I/O バッファリングはあまり性能がよくなかったり、
細かい制御が出来なかったりするので、
独自にバッファリング処理をやってる処理系はあるね。
そのバッファリング処理部分に統合する形で文字列ポートを実装するのが妥当だと思う。
用途による選択の余地はあるものの、これが一番普通の選択だと思う。
なるべく CRT に委ねるというポリシーなら、
メモリをファイルのように見せる機能が OS にあったりするので、
そういうのを使うことも出来る。
fmemopen とか。
環境依存になっちゃうけど。
繰返しになるけど、遅いことを許容するというのも方法のひとつだよ。
> 独自にバッファリング処理をやってる処理系はあるね。
> そのバッファリング処理部分に統合する形で文字列ポートを実装するのが妥当だと思う。
> 用途による選択の余地はあるものの、これが一番普通の選択だと思う。
これ良さそうだけど色々と面倒な事をしないといけない気がして億劫
fmemopenが良い感じに手を抜けそうだからこれにしようかな
手を抜きたいならLispで書くのが一番だが。
リストと固定長文字列あれば可変長キューは簡単に実装出来るでしょ。
親切な方教えて
あるシンボルが関数シンボルかどうかを調べる方法はありませんでしょうか?
仮にそういう関数を(func? x)とすると
(deifne ++ (lambda (n) (+ n 1)))
としてあるとき
(func? '++) ->#t
(func? '+ ) -> #t
(func? 'no-such-function) ->#f
となるような関数があると便利なんですが
procedure: (procedure? obj)
returns: #t if obj is a procedure, #f otherwise
libraries: (rnrs base), (rnrs)
(procedure? car) → #t
(procedure? 'car) → #f
(procedure? (lambda (x) x)) → #t
(procedure? '(lambda (x) x)) → #f
(call/cc procedure?) → #t
http://www.scheme.com/tspl4/objects.html#./objects:h2
853 :
デフォルトの名無しさん:2014/06/30(月) 18:43:43.06 ID:5Vn4Dhv3
無知ですいませんが、
The little Schemer の p95
When functions are correct and
well-designed,, we can think about them
easily
と その横の
And that saved us this time from getting it wrong.
の訳をお願いします
本文の文脈は参照してない。
関数が正しく良い設計ならば理解することはたやすい。
そして今回のような場合には悪くしてしまうことも防いでくれる。
>>853 When functions are correct and
well-designed,, we can think about them
easily
関数がきちんと動くだけでなくてな、加えて良くデザインされてるとな、定義を読んで理解しやすいものや
And that saved us this time from getting it wrong.
ほんでなあ、するとや、よいデザインで読みやすいいうもんは、関数の定義、機能を誤解しにくくしてくれるんやで
どや!えらいもんやろ。チンチンいじりなごらでええから
よおくかみしめるんやで
広島弁でお願いします><
>>856 関数がちゃんと動くだけじゃのぉてね、ええデザインしてあったら定義を読んで理解しやすいよねぇ?
じゃけぇね、チンチンいじりなごらでええからいじりなごらでええけえよぉ考えんさい
で、どない?
859 :
デフォルトの名無しさん:2014/06/30(月) 23:35:46.72 ID:5Vn4Dhv3
>>854 >>855 ありがとうございます
すっきりしました
そして見返した後こんな翻訳もできない自分に嘆きました
The Little Schemer では procedure ではなく function になってるのは歴史的経緯?
The Little Schemerの範囲なら関数と呼んでも特に問題ないでしょ。
いつも専門用語的な狭い範囲の用法として理解しない方がいい。
専門家が他国語を理解する時に陥りがちな誤りの一つ。
もともとのThe Little Lisperでfunctionと表記してたのが
改訂版のThe Little Schemerにそのまま引き継がれたんだろう
前者と後者では言語も違うが章の構成も違う
863 :
デフォルトの名無しさん:2014/07/01(火) 19:20:41.62 ID:mAs7CsRJ
というかなぜSchemeは「function」しなかったのだろうか
864 :
デフォルトの名無しさん:2014/07/01(火) 19:51:35.85 ID:mAs7CsRJ
「function」
↓
「function」と
865 :
デフォルトの名無しさん:2014/07/01(火) 20:33:26.18 ID:lJh4uqZb
SteeleとSussmanはSchemeはpure functionalじゃないことを意識してた。
だから"Lambda: The Ultimate Imperative"なんて論文があるわけ。
866 :
デフォルトの名無しさん:2014/07/02(水) 00:04:14.82 ID:tskje/aN
867 :
デフォルトの名無しさん:2014/07/07(月) 05:30:43.53 ID:Aa65Kzdk
The Little Schemer の9章からもうわけわかめ
なにがどういうことだ
9章では「継続」を扱っている
テキストでつまづいたら
環境とかクロジャーとかを勉強してから戻るといいかも
文字列をシンボルのリストにする方法、あるいは文字をシンボルにする方法を教えてください
>>869 ;;; Schemiの場合
(let (
;;文字列をシンボルに
(a (string->symbol "hello"))
;;文字をシンボルに
(b (string->symbol (make-string 1 #\h))))
;;評価の表示
(format
#t "\nIs ~s a symbol? ~s\nIs ~s a symbol? ~s\n"
a (symbol? a) b (symbol? b)))
Is hello a symbol? #t
Is h a symbol? #t
>869
文字列からシンボルのリストってどゆこと?
onlispにそのまんまのコードが書いてある
(defun explode (sym)
(map 'list #'(lambda (c)
(intern (make-string 1
:initial-element c)))
(symbol-name sym)))
;;文字列をシンボルのリストに
;;;while版
(define (string->charlist str)
(let ((tmp (string->list str))
(res '()))
(while (not (null? tmp))
(set! res (cons (string->symbol
(make-string 1 (car tmp)))
res))
(set! tmp (cdr tmp)))
(reverse! res)))
;;;再帰版
(define (string->charlist* str)
(letrec
((aux
(lambda (ls)
(cond
((null? ls) '())
(else
(cons (string->symbol
(make-string 1 (car ls)))
(aux (cdr ls))))))))
(aux (string->list str))))
(string->charlist "hello")
(h e l l o)
(string->charlist* "hello")
(h e l l o)
(define (string->symbols x)
(map string->symbol
(map (lambda (x) (list->string (list x)))
(string->list x))))
(define (char->symbol x)
(string->symbol
(list->string (list x))))
ターミナルで動かすGNU/Clispについて質問があります。
二行に渡るコードを書くときに、改行がCTR+ENTERでできることは知っているのですが、インデントや、行をまたがったカーソルの移動はどうすれば良いのでしょうか?
バックキーを入力したのでは、その行しか消せません。
矢印キーも同様です。ググっても乗っていませんでした。
よろしくおねがいします。
877 :
デフォルトの名無しさん:2014/07/09(水) 01:18:15.86 ID:7kGfnEUA
質問ですが
CommonLisp系統のLisp-2(名前空間が関数と変数で別)である理由は何ですか
879 :
デフォルトの名無しさん:2014/07/09(水) 01:25:02.28 ID:7kGfnEUA
LispがLisp-1的世界を切り開いてきた。
それまではなかった。
多分ドメインを別にする習慣のあった数学の影響と
初期の機械語プログラミングの困難さから。
Turingマシン、ノイマン型、Lispという計算機科学の系譜が
計算機工学の中では、ほそぼそとしたLisp-1的流れだった。
最初からLisp-1でよかったじゃんと思う人がいるのは、
それだけ世の中にfunctional programmingが普及してきたという事。
ただ歴史的には、Lispが開発された頃、
Lisp-1的言語は普通じゃなかった。
882 :
デフォルトの名無しさん:2014/07/11(金) 01:24:30.06 ID:3pyQUcUp
Yコンビネータ全くわからんぞ
だれか教えてくりー泣
その気持はよくわかるけど、教えてもらってわかるというたぐいのものでもないような。
結局は定義をしつこく読むくらいしかないよ。
いくつか方法がある。
(1) 実装として。S・Kコンビネータ計算を実行する処理系を書いてみれば、
そのようなコンビネータの一種としてYもSやKと同様に作れる。
(2) 意味論から。再帰的関数を再帰の代わりに不動点として定義するのに
使われる不動点コンビネータがYである、という所から。
あまりこだわらず、周辺をいろいろ攻めているうちにわかってくると思う。
Yは一旦諦めてZをそれらしく実装してみるところから始めてみるのも手かな
Yコンビネータは同じく全く理解できなかったけど、「On Lisp」後注の半ページほどの説明を読んだら、すっと理解できた
(意味論とか難しいことを言われると本当に理解できているのか怪しいが…)
しかし、Webの草稿置き場のものには残念ながら後注は無いようだ
世界の料理ショーを見てわかった(嘘
うーむ
そろそろThe Little Schemerの
8. Lambda the Ultimateに入る俺としては緊張するな継続にYコンビネーターか。
なんのことやら知らんけど
今までのところは楽しくやってきたが
なんか難しめのことらしいな
そんなの初級でやるのか、リトルスキーマー君
ラムダ計算の世界で再帰ができるってだけの話じゃないの?
数学的には無数にある不動点コンビネータの一つであるとかなんとかいろいろあるだろうけど
>>889 に一票。
手動で展開していって確かに再帰になることを確認したらそれでいいと思うよ。
なんでSchemeにはloopマクロがないの?
racketのforとかsrfi-42とか名前変えてるのは
何故?
なければ作ろう!
俺はnilがいいなあ
Common Lispに戻ろうかなあ
loopマクロみたいな巨大なものが srfi 的なやり方で合意が取れるとは思えないんだよなぁ…。
ffiというとC言語しかみないのですが
Javaと連携できるのがkawaとか一部しかないのって
何か理由があるのでしょうか
いいモノは人には教えないという人間の性が理由
>>895 kawa が Java と連携できるのは、Scala や JRuby 等と同様に
Java VM 上で動く Scheme 実装だからというのが理由
それに当てはまらない(Java VM 以外の手段で実装された)処理系の場合は、
JNI を介して連携することになるけど、「苦労の割に得る利益が少ない」から普及しない
たとえば過去には Apple が Java-Cocoa(ObjC) 連携を試みたけど、
ずいぶんと前に廃止した(かろうじて WebObjects が残っている?)
まとめると Java の膨大なライブラリ/フレームワークは魅力的だけど、
それを活用したいなら(kawa のような)JVM前提の処理系へ魂を売り渡しなさい、ってこと
それもユーザ数が多ければ手間をものともせずにやっちゃうような酔狂な人が現れたりもするんだけど、
マンパワー不足はマイナー言語の性というもの
Schemeに拘らないならABCLとかClojureってのもあるぞ
>>895
>>899 だよね。
これ以上何が必要なのか分からん。
>>898 pythonだって別実装は大した数じゃないよ。
903 :
デフォルトの名無しさん:2014/07/16(水) 23:51:45.48 ID:OHagA9er
tail callはまだ仕様になってない。
byte code verifierの仕様が変わるから深刻。