関数型言語Part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/987954395/
0685デフォルトの名無しさん
NGNGS式だと親近感が沸かない人が沢山いるらしいので・・・
0686デフォルトの名無しさん
NGNGHaskellと比較しているけど・・・
0687デフォルトの名無しさん
NGNGえーと…気分転換に括弧を<>に買えてみるとか
<list 'a 'b 'e>
=><a b e>
なんとなくXMLっぽいかな。
0688デフォルトの名無しさん
NGNGなんとなくチョンっぽい。
0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG(´ー`)
↓
<`∀´>
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG99 :98 :02/05/02 13:12
∀といってもこういうの↓じゃないぞ
(・∀・)
100 :デフォルトの名無しさん :02/05/02 13:17
>>98
最近それに見えてしまって困ってるんです(まじ深刻
101 :デフォルトの名無しさん :02/05/02 13:19
(・∀・) (・∃・) (・∧・) (・∨・)
102 :デフォルトの名無しさん :02/05/02 13:20
(゜¬゜)
103 :デフォルトの名無しさん :02/05/02 13:44
>>101-102
やめてくれ、これからそういう記号を扱う講義があるんだから…(笑)
0693名無しさん@お腹いっぱい。
NGNGことを勉強するわけだけど、それとは別に学問としてのプログラミングも
勉強したい。つまり言語の理論的な根拠とかね。
関数型言語はそういったことを求めるプログラマの期待には応えてくれるもの?
数学の知識(代数、基礎論)はほんの僅かですがあります。
0694ななし
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4000050060/qid=1020731621/sr=1-3/ref=sr_1_2_3/250-3651387-8720210
http://www.amazon.co.jp/exec/obidos/ASIN/4000061909/qid=1020731621/sr=1-4/ref=sr_1_2_4/250-3651387-8720210
http://www.md.chalmers.se/~rjmh/tutorials.html
でどうよ?
0695名無しさん@お腹いっぱい。
NGNGありがとうございます。
とりあえず、「論理とプログラム意味論」を注文しました。
とうちゃっくが楽しみです。
0696デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/489471163X/ref=sr_aps_d_1_1/250-9503446-8059411
おすすめ。
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG< `ш´> < 角張った顔が超先生に見えるかニダーに見えるか。それが君の人生を表している。
>>698
上手い。
0700デフォルトの名無しさん
NGNGなんてことを言われたのですが,そういうもんですかねぇ
0701デフォルトの名無しさん
NGNGそりゃオブジェクト指向は副作用が(ほぼ)必須だから。
オブジェクトって状態のカタマリじゃん。
0702デフォルトの名無しさん
NGNG必須ですよ、ええ
0703デフォルトの名無しさん
NGNGOOだと*プログラマにとって*副作用を使いまくるスタイルが自然だろう。
「メッセージを受け取ると内部状態が変わる」というのが
ありがちなOOの計算モデルだから。
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG関数プログラミングとしては何の問題もないような気が・・・
0706デフォルトの名無しさん
NGNGどういうこと?
局所的な副作用を含むコードということ?
例を示してみよ。
0707デフォルトの名無しさん
NGNG例えばファイルとかにはバンバン書き込むけど
そのファイルを参照(読み出し)できなければ
プログラムの参照透明性は確保できるとか?
0708デフォルトの名無しさん
NGNGそれは意味がわからない。
0709デフォルトの名無しさん
NGNGっていうか、子ね
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNGhttp://www.dcs.ed.ac.uk/home/jrl/
の
"When is a functional program not a functional program?"
に、「副作用を使ってても参照透明になるのは、どういう場合か?」
みたいな論文も一応はある。
0713デフォルトの名無しさん
NGNGhttp://www.dcs.ed.ac.uk/home/jrl/
にある
"When is a functional program not a functional program?"
は「副作用を使用してる関数が参照透明になるのはどういう場合か」
みたいな論文。そういう研究も一応は存在する。
なんか凍ったので再投稿してるんだが、二重カキコになったらすまん。
0714デフォルトの名無しさん
NGNGどうして透明なんだ?
空っぽという意味で透明ということならば納得できるが。
0716名無しさん@Emacs
NGNGConcurrent Clean のユニークタイプがそんな感じじゃない?
Concurrent Clean に詳しい方いませんか?
0717デフォルトの名無しさん
NGNGCLEAN LANGUAGE REPORT VERSION 2.0 Section 9.1: Basic Idea Behind Uniqueness Typingより
> It is guaranteed by the type system that fwritec has private access to the file such that overwriting the file can be done
> without violating the functional semantics of the program. The resulting file is unique as well and can therefore be passed
> as continuation to another call of e.g. fwritec to make further writing possible.
脳ミソが透明だったのは707ではなく
>>708-711 >>714-715 だったようだな。(禿藁
0718デフォルトの名無しさん
NGNG訳してくれ。
おれには無理なのでよろしく。
0720デフォルトの名無しさん
NGNG連続で罵倒される発言には見えんが。
不自然すぎる。
0721デフォルトの名無しさん
NGNGちゃんと説明しる!
0722720
NGNG俺は707じゃないが、707の言ってることぐらい説明しなくても
わかるだろ。(ワラ
ファイルを書き込む副作用があっても、参照しないから透明性は
確保されるってことだろ?
0723デフォルトの名無しさん
NGNGっつーかさ、最近特に煽りオンリーなアフォが増えてないか?
0724デフォルトの名無しさん
NGNGそれは何か意味あんのか?
0725デフォルトの名無しさん
NGNGファイルの同一位置に対して
読み → 書き → 読み の順序はダメだが
読み → 書き とか
書き → 読み といった
パターンのアクセスだけであることを保証できれば
参照透明性は確保されてるだろ?
0726デフォルトの名無しさん
NGNG意味が無いから問題なんだろ。
意味が無くなってしまうのに>>705はなぜ問題が無いのか、
意味がある別の状況だとしたらどういうことなのか。
こういうことを聞いてるんだろう。
0727デフォルトの名無しさん
NGNG参照透明に解釈できれば問題ない、ってことでわ。
たとえばモナドやCleanのunique typeはそんな枠組みだな。
0728デフォルトの名無しさん
NGNGつーかさ、意味わかってないのに煽り入れて、後で自爆するやつ、増えてる気がする。
0729デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGマイナーな理論出すならちゃんと説明してくれ
0732デフォルトの名無しさん
NGNGデータオブジェクトへの参照が1つであることが保証された型。
2つの変数から同時に参照しようとするとコンパイラがエラーを出す。
uniqueなベクタなら、破壊的に書き換える実装でも参照透明性は崩れない。
ESP処理系の「1ビットリファレンスカウンタ」とか、linear logicとか
も似てるね。
0733デフォルトの名無しさん
NGNGマイナーか?
0734デフォルトの名無しさん
NGNGマイナー中のマイナーの、どマイナーです。
0735731
NGNG説明ありがとう。
>uniqueなベクタなら、破壊的に書き換える実装でも参照透明性は崩れない。
これどういうこと?
vectorの状態は変わるんでしょ?
0736デフォルトの名無しさん
NGNGlet (new_vector, old_value) = set_vector(vector, index, new_value)
in <body>
とする。
<body>のなかでvectorはもう参照できない(参照したらエラー)
set_vectorは、概念的には「vectorのうち、index番目だけを
new_valueに書き換えた新たなベクター(と、index番目に入っ
ていた元の値の組)を返す」わけだが、実装としては上書きし
ちゃってもだれも気が付かない。
0737デフォルトの名無しさん
NGNGmonadの方が、言語の意味論を拡張しないですむので良いかも。
0738731
NGNGああ、言わんとする事がわかりました。
0739731
NGNGしていいってことかな。
0740デフォルトの名無しさん
NGNG意味不明。
0741739
NGNGつまりだ、
func_a(structure a) {
func_b(a);
print a.value;
}
とかだとfuncは値渡ししないと後のprintで結果が変わる可能性があるけど、
func_a(structure a) {
print a.value;
func_b(a);
}
ならfunc_bには参照渡ししても値の変化を気にする必要が無い、
ということを言いたかったの。
これでもだめ?
0742739
NGNG末尾呼び出しは自然とこの性質を持ってることになるよ、ね?
func_aの最初〜func_b呼び出しまでの間なら、
破壊活動を行っても参照透過性は保てると。
0743デフォルトの名無しさん
NGNGそういう順序依存のプログラムで参照透明性を気にするんなら
もともとモナドとか使うしかないよね。
それと、参照透明な言語では引数をコピーしてもしなくても
意味は変わらないので、値渡し/参照渡しという区別を言語は
しないと思う。まあ実装としては「ポインタの値渡し」が普通
だろうけど。
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG0746705
NGNG関数プログラミングでは、副作用があっては行けない
というようなことが言われていたような感じだったので、
別に参照透明性が確保できれば、副作用の有無は
関数プログラミングにとってはさほどの
問題ではないのではないかと、
実際モナドは、破壊的変更と参照透明性の両立を
目的とした技術であると言えるわけだし。
だから、707のような、
どのような場合に関数は参照透明であり得るかと言う議論は、
微妙に話がずれているのではないかと言うことだよ。
とまあ、思ったわけだ。
0747デフォルトの名無しさん
NGNGモナドやlinear typeがマイナーだと言っているようなもんだと思うが。
やはりストリームベースが本流か?環境渡し技術なんて邪道か?
それこそ頭空っぽだな。逝って来い。
0748デフォルトの名無しさん
NGNG頭がMirandaで止まってる人もいるのですよ。
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG何のことかわからない人が多かったと思われ…
0751デフォルトの名無しさん
NGNGuniqe typeの型チェックができればいいだけでは?
0752751
NGNGできるが、unique typeだと、型システムは変更するが(Hindley-Milner
からは少しずれるが)、意味論は変えずに参照透明性が実現できる、
ということでよろしいか?
間違っていたらスマソ
0753デフォルトの名無しさん
NGNGそれは駄目だよ〜ん
0754デフォルトの名無しさん
NGNGなんじゃそら…
unique typeを使う型付け体系がuniqueness typingだろ。表裏一体。
0755デフォルトの名無しさん
NGNGtyping systemが違えば当然セマンティクスは違ってくると思うのだが。
あと、参照がuniqueかどうかのチェックは構文的な(文脈自由な)チェッ
クじゃ無理だよ。
0756デフォルトの名無しさん
NGNGhindley-milner?
つか、違いは、モナドが黙示的な環境渡し機構なのに対して、
unique type attributeを持つオブジェクトは、
明示的に渡されるっつーことだよ。
0757デフォルトの名無しさん
NGNG>あと、参照がuniqueかどうかのチェックは構文的な(文脈自由な)チェッ
>クじゃ無理だよ。
よほど簡単な型システムじゃないかぎり、型がつくプログラムの集合自身
文脈自由じゃないと思われ。心配するな。
0758デフォルトの名無しさん
NGNGhindley-milnerではなく、mycroft-milnerを拡張してるんだよ。
似てはいるけど、linear typeそのものではなく、いくつか違う点があるよ。
0759750
NGNG0760デフォルトの名無しさん
NGNGちょっと見てみた。
Linear typeのようなものを導入するのかと思いきや、
モナドを使っていた。
正直な話、若干無理がある気がしないでもない。
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNG個人的には、ライブラリそのものの移植はできるとおもうよ。
それはさほど難しくないと思う。
俺が言っているのはそのことではなくて、
Cleanと同様の表現力を持って使えるとは思えないということだよ。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNGin-placeで部分書き換えが可能なデータとかならmonadでできる
ように思うのだけど。
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG参照透明性を壊さない限りでの、
より制限のないオブジェクトへのアクセスということだよ。
そのことは、より高い表現力を担保し得ると思うんだが。
モナドは、正直な話、入出力リソースに対する制限が強すぎる上に、
その制限は、純粋関数型言語にとって
甘受しなければならないものとは思えない。
つまり、制限対利益のバランスが取れてないと言いたいんだが。
0768KOKUYO
NGNGmember関数を、第2引数のリストの深いレベルまで
第1引数を探索して取り除くように拡張した関数はどうやって
作ればいいんですか?
あと、二重以上のリストを第一引数として受け取り、
深さ1のリストとして返す関数はどうすればいいんですか?
動作例)(makeflat '(a(b c)((d(e)f)g)h))
→(a b c d e f g)
0769デフォルトの名無しさん
NGNGまあ、宿題がんばってくれ。心の中で応援してるぞ (藁
0770デフォルトの名無しさん
NGNG宿題は自分でやりましょう。
0771デフォルトの名無しさん
NGNGflattenで検索すれ
0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNGF#についてはそのうち俺がやってやろう
期待しないで待っておれ
0774デフォルトの名無しさん
NGNGApparently, Simon Peyton-Jones asked them to add a tail-call primitive in the virtual
machine language, somehing absolutely necessary for getting an efficient
implementation of any functional languages.
In fact, the many projects that tried to compile an FP to the JVM failed because of the inability to
optimise tail-calls (something your average C-compiler doesn't even do
right) - there were other reasons why the JVM is not an ideal VM for FPs,
but this is a critical issue.
0775デフォルトの名無しさん
NGNG糞サンのJVMは末尾再起しないが、
IBMは末尾再起(MSも)する。
IBMを使えばいいのだ。
0776デフォルトの名無しさん
NGNGJava VM でtail recursion optimizeできないって、どおゆーこと?
詳しく教えて
0777776
NGNG単純な末尾再帰最適化って、
(1)終了条件満たしてなかったら
(2)引数スタック書き換えて
(3)関数の先頭付近にジャンプ!
だよね。JavaVMでできそう。
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNGじゃ、スタックフレームをローカル変数にコピーしてから操作すればいいんでないの?
0780デフォルトの名無しさん
NGNGJVMのドキュメントでも読ま!
Simon Peyton-Jones御大がそんな低レベルな事で悩んでると思うなぼ!
0781デフォルトの名無しさん
NGNG読む価値見出せなかったから、
前の職場の本棚で肥やしになってる。
#だって当時の連中って、HotJava α版 とか解析してプログラミングしてたし、
#技術的にはSmalltalkの焼き直しっぽくて、型推論とか検証システムとか面白ソーナ仕組みが一切なかったから
#放置しますた
0782デフォルトの名無しさん
NGNG末尾再帰の件は、重箱の隅突っ付くような些細な問題であって、
JavaVMが 関数型言語のVMとして不適であるのには別な理由があるって書いてるね。
原文どこ?
0783デフォルトの名無しさん
NGNGフライブルグ大学の奴がcomp.lang.functionalで
書き込んだ内容をコピペしただけ。
0784デフォルトの名無しさん
NGNG世間知らずだった昔は、
comp.* 読むに値する学術スレ
alt.* コピペ嵐、AA嵐が跳梁跋扈する2ちゃんのような玉石混合のスレ
とか思ってたけど、comp も以外と糞っすね。
■ このスレッドは過去ログ倉庫に格納されています