関数型言語Part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/987954395/
0412デフォルトの名無しさん
NGNG参照の透明性は
「変数の上書きをしない」ってことよりも、
「同一表現式は同一の値を表す」ことのほうが本質だと思うが。
つまり、同じ変数は常に同じ値を表すだけでなく、
同じ関数に同じ引数を与えてやると、同じ返り値が返ってくるってことが大事。
0413デフォルトの名無しさん
NGNGある用語が正しいか或いは正しい用法かどうかなど
個々の信念の問題であって知識の問題ではあるまい。
もちろん正しい用法においてその言葉は「ある」のであって
そうでなければ「ない」言葉を使っていることになる。
流行語などに対して文句を付けるのをたまに聞くだろう?
「ない」という主張が「おかしい」などということは全くない。
そしてこれは概念を理解しているかどうか、すなわちその事を
知っているかどうかとはまた別問題だ。その点で
「知ったかぶり」という言葉で表される事態では全くない。
この「恒等関係」にしてもその内容からすれば「汎同値関係」とでも
名づけたほうがよっぽどましだろう(と私は思う)。あなたは
そのような言葉は「ない」と主張するかも知れないが。
専門用語でこの様なことはよく起こる。それは研究者同士の
交流が希薄だったり或いは稀に対立したりするからだ。
その場合相手の用法を全く知らないことが多い。
それは「知らないならば議論に参加する資格がない」などと
済まされる問題ではなく、一々確認を必要とする。
最終的な用語についても歩み寄りがない場合もある。
2chでの様に喧嘩腰の人はまずいないが。
0414デフォルトの名無しさん
NGNG409が問題にしているのは用語の正誤じゃないでしょ。
はっきりいって、「そのような用語はない」はすごく強い言明だよ。
よっぽど確信がないかぎり、使うべきものじゃないと思うが。
まあ、2chみたいな場で
「これを読んでない奴は議論に参加するな」ってのも
ちょっと乱暴だと思うけど。
0415376>>391
NGNGそもそもCPUに近いところでの動作の話になると、たいていの言語は、
コンパイル後のコードやVMの動作の話になって、その言語の持つ特徴
が、どっかいっちゃうから。
>あとOOじゃないと保持状態が作れないというけれど
おれは>>376ではそんなこと書いてない。
OOであるがゆえに状態を持っている→関数型で書きなおすと状態がなくなってすっきり
っていう例があるのか?って書いたんだ。>>411には通じてるね。
だから答えにはなってないんだよ。
俺があと言いたい事は>>410が書いてるのとだいたい一緒。
0417デフォルトの名無しさん
NGNG>「そのような用語はない」
これは用例がないことを意味するのではなく
それを誤りであるとする言明。用例があるのは
用例に対する応答である以上当然ある。この発言が
発言者の言語に関する正誤感覚に基づいているのは
言うまでもない。この点においてもちろん「すごく強い言明」で
あり、強い信念を感じとれる。この時どの程度多数の支持が
あるかは(発言者に影響しはするが)、特に妥当性に関しての信念ならば
多くの発言者は別問題と考えるだろう。
0418デフォルトの名無しさん
NGNGんー、議論に参加するなって言うか、
知ったかで参加するなって言うことなんだけど。
知らないということを前提にして
聞く意味も込めて参加するということならば
2chを問わずかまわないと思ってるけど。
0419デフォルトの名無しさん
NGNG>>418か?おまえは神か?
0421デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNGわかった、わかった、知ったかは良くないよ。それは事実だよ。
あなたの主張は認めるよ。
だから関数型言語の理解・研究・発展に貢献する発言をしてください。
あるいは関数型言語のここがダメとかさ。
0424デフォルトの名無しさん
NGNG君もね
0425デフォルトの名無しさん
NGNG言うことが大げさ
0426age
NGNGhttp://anny.kir.jp/bbs-a/imgboard.cgi
モロダシ画像、チャイルドポルノ、バンバンアップ!!
おめ@丸見え!!
他では有料のアノ画像常時アップ!!
0427デフォルトの名無しさん
NGNG要らない印象があるのね。手続き型言語だと、UnitTestを使って定義域での動
作と定義域外での動作をきちんと検証しないと気が済まない(テスト中毒って
奴ですか)。だけど、Schemeとか使っているときは、テストとプログラミング
が一体化しているというか、わざわざテスト用のコードを書いたりしないな。
まだ経験が浅いからかしら。それとも関数型言語だからかしら。
0428デフォルトの名無しさん
NGNGテストが問題になるような規模のコードを書かない/書けないから
0429デフォルトの名無しさん
NGNGきちんと検証するのが、ごくごくあたりまえです。
むしろ、きちんと検証しないとあとがたいへん。
でもしない人も結構多くて、そういうやつがプロジェクトの足を引っ張るんだよなぁ…
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG本屋で見比べて、萩谷昌巳 著「関数プログラミング」
買っちゃいました!
0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG>テストが問題になるような規模
ってどれぐらい?
0435デフォルトの名無しさん
NGNG宣言的プログラミングが良く似合う。
ところでどっかに書いてあったProlog++, Mercury てナニ?
0436デフォルトの名無しさん
NGNGProlog スレにでてたね。
Mercury は
http://www.cs.mu.oz.au/research/mercury/
> Mercury is a new logic/functional programming language
ということで (FAQ for comp.lang.functional にも載ってるし)
このスレ向きですかね。
0437デフォルトの名無しさん
NGNG俺も訊きたい。
0438デフォルトの名無しさん
NGNG>>テストが問題になるような規模
>ってどれぐらい?
関数言語厨房が書ける最大の行数+1
0439デフォルトの名無しさん
NGNGおいおい、一行か?
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNGHoare Logic とか Curry-Howard isomorphism のあたりかな?
プログラム検証を支援する仕組みとして、
・型システムの導入とか、
・事前条件/事後条件の記述(Eiffel)とか、
・形式的仕様記述言語による仕様記述とか、
いろいろありますよね。
関数型言語だと、どうして「検証するまでもなく」って感じるのかな?
副作用が少なくて、見通しがよいからかな?
0442デフォルトの名無しさん
NGNG高階関数 と 高階論理 の (類似性) を
誰か教えて頂けないでしょうか?
あとついでに、本スレの流れでいうと、
リフレクション(特にjava.lang.reflect) と 高階関数 って、
何か関係あるんでしょうか、教えて下さい.
0443デフォルトの名無しさん
NGNG>高階関数 と 高階論理 の (類似性) を誰か教えて頂けないでしょうか?
はぁ?ちゃんとわかるように質問しろよ。
>リフレクション(特にjava.lang.reflect) と 高階関数 って、
関係無い。
0444442
NGNG>>442
>2.リフレクション(特にjava.lang.reflect) と 高階関数 って、
> 何か関係あるんでしょうか、教えて下さい.
Javaで高階関数を作れないか、という話題がありました。この話題を考えるに、
Javaでは、メソッドの引数や戻り値に、メソッドを指定する事ができないので、
(1)Javaのリフレクション機能(java.lang.reflect.*)を使って、Methodクラスを返すとか、
(2)事前に定義済みの内部クラス・インスタンスを返すとか、
(3)動的にクラスを生成する拡張機能(jakarta.apache.org/bcel や Java上の言語処理系)を使う、
といった答えしか思いつきませんでした.
ラムダ計算やコンビネータ論理が、プログラムの形式的モデルとして有効であるならば、
高階関数ってのは、オブジェクト指向言語実装系において、どのような意味を持つのでしょうか、
あるいは、オブジェクト指向言語を、ラムダ計算やコンビネータ論理でモデル化するのは
適切なのでしょうか?
かなりいい加減に、
実は「リフレクション」あたりに対応させる事ができるのではないだろーか、
と思いつき、先の質問2. をカキコいたしました。
0445デフォルトの名無しさん
NGNGpizzaでfirst-class functionsだべさ
参考にするべさ
これはinner classとしてJavaにあるということになっとるべさ
0446444
NGNG# (Generic Java や、JCP14: Adding Generic Types to the Java の祖先ですか.)
結局、この問題は、
「Javaでは first-class functionsの代わりに inner classが実装されているから、
それを使えば高階関数を作れる」
という回答でよろしいでしょうか?
# オブジェクト指向の形式モデルなんて言い出したのヴァカみたい>>俺
0447プロジェクト・リーダー
NGNGお教え下さい。
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNG>高階関数 と 高階論理 の (類似性) を
高階論理では述語だけでなく、述語に関する述語や、さらにその上の述語...
などが記述できます。さて、集合A上の述語PというのはPの特性関数
X_P:A->boolと同一視できるので、A上の述語の述語が書けるというのは
(A->bool)->boolという高階関数が書けると言いかえられます。
というように結びつけられると思われ。
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGhttp://pvs.csl.sri.com/
の他にどのようなものがあるのでしょうか?
ちなみにPVSはマスターするのに最低6ヵ月必要らしいの
ですが、他のものもやはりそれぐらいかかるものですか?
0453デフォルトの名無しさん
NGNG"Why Functional Programming Matters"の日本語訳
http://www.sampou.org/haskell/article/whyfp.html
0454デフォルトの名無しさん
NGNG検証とは違うけどCafeOBJも面白いよ。
0455
NGNGそれなかなかいいね。
0456デフォルトの名無しさん
NGNGhttp://www.towelrecords.com/varitext/001.html
0457デフォルトの名無しさん
NGNGHaskell、ML,LISP,Scheme,Emacs Lisp
ぐらいですか?
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1010157331/l50
のスレの>167さん?
0460デフォルトの名無しさん
NGNG0461名無しさん@お腹いっぱい。
NGNG知りたいのであげ
0462デフォルトの名無しさん
NGNGMLが抜けてます〜
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNGwhat?
0465デフォルトの名無しさん
NGNGなんかえらいでかいパッケージなんだけどよ。
0466デフォルトの名無しさん
NGNG「おいオメー さっきから うるせえぞ
『知りません』『知りません』ってよォーーーー
『知りません』・・・そんな言葉は使う必要がねーんだ
なぜなら オレやオレたちの仲間は その言葉を頭に浮かべた時には!
既にGoogleや書籍で調べがついちまって もうすでに『知っている』からだッ!
だから 使った事がねェーーーッ
『知っている』なら 使ってもいいッ!」
0467デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG論理プログラミングをサポートするMLみたいな感じだね。
現実的な感じがするところが、使えそうな・面白くなさそううな。
0470デフォルトの名無しさん
NGNG「気に入らない事でもあったのですか、何か?」
0471デフォルトの名無しさん
NGNGMLが論理プログラミングをサポートすると、どうして
>現実的な感じがするところが、使えそうな
なんでしょうか?
そうかなあ?
0472469
NGNG論理プログラミングをML的にやると現実的になるって印象を
述べております。はい。
0473デフォルトの名無しさん
NGNG論理プログラミング言語をつかう人が聞いたら怒りそうだ(笑
0474デフォルトの名無しさん
NGNGそういう状態なのですか?
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG仕事はRubyだけど、難しくなりそうなプログラムはSchemeで書いて
「本質」に迫ろうとしたり。Rubyで書くと、ad hocなコードで動か
しちゃうことになりがちなので、Schemeでプロトタイピングするこ
とによってそれを避けてます。
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGネタじゃないですよね?
とかいいながらおれも
ポストコボルみたいな
Javaだったりするから
人のこと言えないかw。
0483デフォルトの名無しさん
NGNGad hocは普通に辞書に載っている普通の言葉だが。
「特別な」「一度限りの」という意味。
つまり、ここでは、現在解こうとしている問題に
特化したコードを書いてしまうことを指している。
再利用などまったく考えていないコードのことだ
な。Rubyはスクリプト言語だからad hocなコー
ドを書きやすい。Schemeはそうじゃないってこ
と。
0484デフォルトの名無しさん
NGNG後付けの、みたいな感じじゃないの?
0485デフォルトの名無しさん
NGNG中身を後から書いたりすることだと
思ってたが、俺、間違ってる?
0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNG0488デフォルトの名無しさん
NGNGad hocな理論、とか言うよね?
あれは「後付け」では?
0489デフォルトの名無しさん
NGNGhttp://www.dictionary.com/cgi-bin/dict.pl?term=ad+hoc&db=*
0490デフォルトの名無しさん
NGNG国際機関が常設されていない場合なんかを言うと思ったが。
つまり問題が起きるたびに機関を立ち上げて、
終わると閉鎖するって奴。
0491デフォルトの名無しさん
NGNG違う、「場当たり的な」と言う意味。その問題にしか適用できないような、
いわば理論とは呼べない程度の理論のこと。
0492デフォルトの名無しさん
NGNGありがとう。
気持ち的には正しい意味で使ってた。
日本語にしようとは思わなかっただけで。
0493デフォルトの名無しさん
NGNGeval がないのが惜しい。
0494デフォルトの名無しさん
NGNG>eval がないのが惜しい。
evalって、LISPだけじゃないっすか。
関数型言語とevalは関係ないでしょ。
Excelって再帰できるの?
0495デフォルトの名無しさん
NGNGExcelに限らず、任意の言語で関数型プログラミングの手法を
使うことはできるよね。FORTRANではさすがにきついが。
0496デフォルトの名無しさん
NGNGこのあたりどうなのでしょう。
他の言語で関数風にかくことってどの程度可能なのでしょう?
再帰のできない言語では、全然ダメですし、
Javaだってコウカイ関数が使えないのであんまり生かせませんし、
たとえばCの文字列操作のような、関数のような形式で扱えないものも
関数的には扱えないですよね。
0497デフォルトの名無しさん
NGNGなんで他の言語で関数風に書こうとするんだ?
そんなこと考える時間割くぐらいなら関数型言語でもやってみたら?
0498デフォルトの名無しさん
NGNGMLに限らないので、やや不便ながらこちらに書きこみます。
お初に書きこみます。
私はMLは嫌いではありません。
そういう上で思っていることです。
数学的背景があるからML(など)は別格であるという見方はちょっとどうかと
思います。
私もMLは面白いなとおもうのですが、MLが好きなほかの人の話を聞くと
ときどきやりきれなくなります。
関数型言語が数学的にサポートされているというのは、単に関数型言語が
「ある」数学的視点にとって都合の良い言語というだけであって、それ以上でも
それ以下でもないはずです。
それは言語が優れているということ(この命題はそもそもきちんと定義できて
いませんが)とはイコールではないと思います。
数学的な援軍を得やすいということだけだと思うのです。
たとえば同じ働きをプログラムをどれだけトータルで経済的に開発できるか、
という基準で考えたり、
同じものをどれだけ解りやすく(つまり低い理解力で)作り出せるかといった
風に考えた場合どうでしょう。
数学的な望ましい性質は、単なる手段に過ぎないと思います。
手段と目的がひっくり返っていませんか?
実際、MLは「使えますか?
どなたかがMLスレで書いていましたが、MLには今世の中で多いであろう
要求にたいしてまとまったライブラリがほとんどないと思うのです。
MLを使っている人は一体何をしているのでしょう?言語と戯れているだけで
実際に使おうとしないのですか?実際に使おうとすると自然にいろいろな資
産が残るとおもうのですが。
個人的には関数型には非常な可能性を感じます。
ぜひ、仕様の口上じゃなくて「実績」で他の言語を蹴散らしてください。
0499デフォルトの名無しさん
NGNGつーか、この板でつかってるやついるのか?実は498だけだったりしないか?
0500デフォルトの名無しさん
NGNGていうか、実際ML使ってる人なんてほとんどいないと思うけど、
その使ってる人の中には、その数学的な特徴が一番重要で、
それゆえ「自分にとって」別格であると思ってる人がいるん
じゃないかな。
その人がそう思ってることをあなたが否定するのこそ
間違ってることだと思うよ。
0501デフォルトの名無しさん
NGNG>>498さんは「使う」人にもっと話して欲しくて煽っているんじゃないかな。
0502デフォルトの名無しさん
NGNG数学的背景がある、というのは言語の設計哲学とか設計上の方法論というべき
ものではないでしょうか。そもそも関数型言語には他にも目を向けるべき重要
なセールスポイントがいくつもあります。型推論、型チェック、ポリモルフィ
ズム、モジュールなどがそうであり、それらは生産性とか可読性を向上させる
目的で実装されています。
足回りが貧弱な感は否めません。ライブラリがないから誰も使わないのか、誰
も使わないからライブラリが放置されているのか...悪循環。
0503名無しさん@navi2ch
NGNGそれはまともなプログラマであれば全ての人が抱くことです。
まずは自分の心に正直になりましょうw。
で、話は変わりますが、
言語として優れていても凡人にとっつきにくいのは
やはり実用的な意味ではゼロに近いです。ですが残り僅かな
ところでかなり有用なのではないでしょうか?
クリティカルなプログラムがCで組まれているのは、
生産性という点から見てもあまり誉められたものではありません。
関数型言語の特性としてプログラムの検証を行えるというのが
強みなのですから、そこをもっと前面に出していってもいいのでは?
既存の言語で既に実現できていることを関数型言語でもやってみろ
という煽りは、2ch的に見ても低レベルだと思います。
私自身は、プログラム検証には興味がありそれ、
それが実在するツールではどの程度実現できているのか、
そんなところが知りたくて今、Haskellを勉強しています。
0504デフォルトの名無しさん
NGNGC++なんかのほうがよっぽど難しいと思います。
難しいという印象がついているのは、関数型言語と世間との接点にいる人が
数学とかラムダ算法とか理論とか、そういう後光を知らずか知ってか、ちらつ
かせながら、良い言語ですよと言ってしまっている事に原因があると思う。
#強迫神経症のような括弧の嵐、人工知能用の難しい特殊言語という先入観の
#付いてしまったLISPも同様に不幸ですね。
実際、MLの基礎的なことは割とすぐにおぼえられると思います。
大学の講義でMLが使われているところのカリキュラムを見てもそれはわかります。
で、たぶん問題はそのあとで、色々なことをしてみようと思ったとたんに、
こういう時にはこういう風に組む、という情報が少ない。(本もソースも)
C言語などからの「発想転換」が必要なところはなおさら。
そして、ML風をやっと掴んできたところで、ライブラリが何も無いので、
覚えたけど使えない。中級者手前で脱落。
他の言語でできることができないなんて、とんでもないと思います。
Cでウインドウシステムを組むのだって、よく考えればかなり無理をしています。
それがわからないのはライブラリがあるからです。
ウインドウシステムやソケット、データベースなどを、なんらかの関数型に合っ
た流儀でつかえるようなライブラリがあったら、つかると思いますけどね。
検証はたしかにものすごい強みですが、そのためだけに不踏の大地たるML
に踏み込むコストと、検証に向かない言語を検証ツールでがんばって検証
することと比較してどうかと思います。検証がどうしても必要となるようなプロ
ジェクトではお金もかけられるだろうし。
普通に使えるようになったMLで検証が可能だったら人々は中毒になることでしょうが。
0505仕様書無しさん
NGNG開発用に使ってもいいんだけどな。
Webアプリ限定だけど。
0506デフォルトの名無しさん
NGNG「C++にはVisualC++があるのに、なんでMLには無いんだ!プンプン」
マイナーな言語何だから仕方ないだろというしかないですなあ。(ワラ
0507デフォルトの名無しさん
NGNGこれで言い訳は通用しません。
ガチンコです。
0508デフォルトの名無しさん
NGNG他言語との勝負などはム板の掃き溜めである
撲滅スレの住人がやってればよろしい。
まあ、.NETで色々できるようになるんなら良いことじゃないの?
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNG同じ土俵に乗ったといえるんじゃないの?
■ このスレッドは過去ログ倉庫に格納されています