関数型プログラミング言語Haskell
■ このスレッドは過去ログ倉庫に格納されています
0001潜伏していた1
NGNG前スレ
http://pc.2ch.net/test/read.cgi/tech/996131288/l50
関連 >>2 以降
0160デフォルトの名無しさん
NGNGシンタックスだけはJavaに似てるけど。逆に言語から仮想環境を想定するとしたら
どんなものになるんだろね。Hakell、というより関数型言語全般のために
作られたようなもの。あるとしたらどんなもんでしょ?
0161153
NGNG0162デフォルトの名無しさん
NGNG0163134
NGNG>ストリームは「いくらでも長くなりうる列」というデータだ。
確かに漏れも、そう思います。ストリーム()
しかし、haskellのモデルではIO入出力はストリーム(ぎリスト)ではないですよね。
ということは結局、評価の順序が入出力に影響するはずですよね。
評価の順序を強制するためにモナドというものを利用しているんじゃないですかねー?
どうなんでしょ。
0164デフォルトの名無しさん
NGNGここの下の所に「Programming Languages:Concepts and Constructs 2/E」
の「日本語訳版を期待」という文字が見えるんですが、今翻訳中なのでしょうか?
もしそうなら超期待!!
>>158
どうも効率面を問題にされているようですが、
私自身たいして関数型言語の経験はありませんが、
仕事の関係上感じている事です。
コンパイラ作ってると、この副作用がないというのが
結構オプティマイズに有効だったりするので、
結構これからの言語の核にすえるのは悪くないと最近思ってます。
計算の依存関係が明白でないと最近のスーパスカラーみたいに
命令スケジュールが必要だと面倒です。
全体的とはいわなくても部分的には関数型言語が高速化への寄与大きいと考えています。
計算機の並列度が上がってくると、少し考え方を変えてみるのも悪くはないと思っています。
ちなみにモナドはあんまり良くわかっていません。(TT)
だれか教えてくれー
0165デフォルトの名無しさん
NGNG昔のバージョンではストリームでI/OやってたんだよHaskellは。
I/Oエラーが扱いにくくってなあ…
モナドの方が楽だよ。
0166134
NGNG本当ですか?
何時の頃のモノなんでしょう?
処理系の名前とバージョンを教えてもらえませんか?
>I/Oエラーが扱いにくくってなあ…
>モナドの方が楽だよ。
たしかに、そうですね。
うーん、モナドから逃げてるのかなー?俺は
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGどうでしょう?
関数も各引数を繋ぐための糊だと考えると
副作用が無いほうが嬉しいのでは?
0169158
NGNG効率は計算機上での実行の際のことです。
・・・・・・というか効率を考えた動作をガチガチにプログラマが記述する際に
場合によってはあるほうが便利ということですね。
一方、最適化のためのプログラムの解析においては
一般に副作用がないほうがやりやすいのは確かだと思います。
だからこそ代入を消してSSAなんて形式に落としたりもするんでしょうし。
0171158
NGNGそれほど悩ましくないんですが・・・・・・。
0172デフォルトの名無しさん
NGNGHaskell 1.1まではそういう仕様だった。全ての準拠処理系がそうなって
たはず。stream I/Oとcontinuation-based I/Oの両方が使えた。
http://www.haskell.org/definition/haskell-report-1.1.tar.gz
Monadic I/Oがあんまり便利なんで今は全部そっち。
0173デフォルトの名無しさん
NGNG配列使えばいいじゃん。副作用なしの。
SISALっていう関数型言語がそうやって、スーパーコンでも
Fortranに負けない性能出してたよ。
Fortran厨は他の言語が書けなかったので普及しなかったが。
0174デフォルトの名無しさん
NGNG0175158
NGNGhttp://www.sys.uea.ac.uk/~jrwg/Sisal/index.html
を読んで見てるけど、やたら配列に特化した言語だなぁ。APLを思い出したよ。
サワリの部分を読んでの感想としては、
配列に特化した構文が多すぎるし、拡張性にも疑問が残る。
この言語を実装する上で研究された内容(解析や最適化の技術)は有益そうだが、
それをつかって書けと言われると結構苦痛かも。
CやFortranのソースに混ぜられると言われてもねぇ。
0176158
NGNGむしろ「スーパーコンのために」開発されたようだ。
スパコン以外にも移植はされているようだが、
どうもメインの技術ははデータ並列っぽい気配が。
もっと詳しく読んでみないと判らない部分もあるが、
そうなると今時のマシンの記憶階層と
マッチするかどうかは些か怪しげ。
0177Super Combinator
NGNG"Comprehending Monads", Philip Wadler読め。面白い。
0178デフォルトの名無しさん
NGNG文句の多いヤツだな。
0179デフォルトの名無しさん
NGNG>>173 は「Haskell の副作用無しの配列使え」と言ってるのだろう。たぶん。
0180デフォルトの名無しさん
NGNGどんな実装してるんでソ。>「Haskell の副作用無しの配列使え」
私が読んだ何件かの「副作用なし配列」の論文は皆頑張っていたけどヤパ−リ
オーバーヘッドが大きくて生の配列ほどには早くない・・・・・・。
0181デフォルトの名無しさん
NGNG>Prologにカットオペレータ
カットオペレータ思い出した。これでProlog嫌いになった。
ところで、Prologも関数型かな? 副作用ないみたいだし。
真偽の2値のみを返すと考えられるかな。もっとも偽の値が
返ればストップするので真のみ返るが。
0182デフォルトの名無しさん
NGNG関数型じゃないね。論理型。
項の「値」を求めてるわけじゃない。
定理を満足する変数の値の組(代入)を求めている。
両方を組み合わせた関数論理型ってのもあるけど。
0183第5世代はどうなった
NGNG論理式の値を求めるのでなく、妥当な推論をするんだった。
unificationできなきゃ終わりという形式だったね。
Hugsのライブラリーに簡単なPrologあるね。
unificationなんかはもともとhaskellにあるから、
簡単に実装できるようだ。
そういえば、カットオペレーターもhaskellで実装
してたかな。
0184デフォルトの名無しさん
NGNG副作用がありまくる手続き型言語や正格言語ではデバッグで
苦労しない。というかデバッグしやすい。
非正格言語の優秀なデバッガって無いからね。
一つでもモデル(非正格言語のデバッガのね)が出来ればね。
0185デフォルトの名無しさん
NGNGOO対応にしたような言語で、.NETにも対応してるらしい
んだけど、この言語ってどうですか?
http://www.mondrian-script.org/
0186デフォルトの名無しさん
NGNGていうか、副作用が無いってのはようするに
思わぬバグが混入しないようにする効果があるわけだから、
デバッグ以前にバグが混入しにくいのでは?
0187デフォルトの名無しさん
NGNGやっぱ銀の弾丸はないもんだよねぇ。
0188デフォルトの名無しさん
NGNGでもバグが無くなる訳ではないでしょ?
仕様のバグという根絶不可能なバグがあるんだから。
やっぱデバッガ必要でしょ。
0189デフォルトの名無しさん
NGNG既存のデバッガ的な考えは合わないよね。
0190デフォルトの名無しさん
NGNG副作用がないので
Unit Test あたりが向いてるかも。
0191デフォルトの名無しさん
NGNGのあたりだろうか。
0192デフォルトの名無しさん
NGNG仕様のバグとデバッガが関係あるんですか?
0193デフォルトの名無しさん
NGNGコードの打ち間違いと理論にだけ気をつければ
やっていけます。
0194Super Combinator
NGNG帰納推論系の人たちで、
間違った具体例の指摘から仕様を直したり、
なんて事が流行ったよね?
そのengineのUI programはdebuggerと呼ばれることが多かった。
0195デフォルトの名無しさん
NGNG屁理屈か
0196デフォルトの名無しさん
NGNG非常に少なくなると言うことでいいのか?
0197デフォルトの名無しさん
NGNG0198え?
NGNG0199デフォルトの名無しさん
NGNGプログラミング言語の前に日本語を勉強尻。
0201デフォルトの名無しさん
NGNGとおもた。
Monadになったら改善できるのかしらん?
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG並列処理の話?
0205デフォルトの名無しさん
NGNG他に使い道は?
0206デフォルトの名無しさん
NGNG「バグ取りの他に使う」と「バグ取りに使わない」の
区別もつかない糞は小1からやりなおせヴォケ
0208デフォルトの名無しさん
NGNGこういうものが作りやすいのが関数型言語の特徴って言われてるから
そっちに期待しちゃうな。あくまで素人の考えだけど。
0209C厨房
NGNG0210デフォルトの名無しさん
NGNG無視できない何かがあるんですかねー。
0211206ではないが
NGNG他人が書いたプログラム(またはライブラリ)を理解するために
デバッガを使って動作を見るのは、けっこうよく使う手だと思う。
>>208
普通は静的な検証ツールはデバッガには含めないと思うけど、
参照透明性の高い関数型言語では、静的/動的の境界はどう定義するんだろう?
例えば多相型の型エラーをデバッグするのって、静的なのか動的なのか…
0212デフォルトの名無しさん
NGNG弱い気がするのは気のせいでしょうか?>>211
0213デフォルトの名無しさん
NGNGお前のような厨房がな。
0214201
NGNG木の好き勝手なところを簡約していくっていうか。
そでで再帰的に定義された無限リストの簡約とかまちがうとこわいな。と。
P.Wadlerの入門書にもそれがらみの話あったよねえ?
0215デフォルトの名無しさん
NGNG動作をステップ実行する従来のデバッグ手法のイメージとはあいいれないかも。
でも、計算順序を無理矢理いれこむ、モナドIO使いまくりのプログラミングなら
命令プログラミングとおんなじだから、print デバッグができるよ。
0216デフォルトの名無しさん
NGNG関数型でイベント駆動処理を書くのって、
ちょっと想像できないんですが。
0217デフォルトの名無しさん
NGNGようとしたけど古いから sage
0218デフォルトの名無しさん
NGNGGTK+HS のサンプルコードとかみてみれば?
0219デフォルトの名無しさん
NGNGモナドによるI/Oのコードをじっとみつめると
入力列内の文字種に応じて呼ばれるハンドラの集まりとも見えてくる。
それがメッセージ列に変わったと思えば書けそうな気がしてくる。
0220デフォルトの名無しさん
NGNG処理系の実行過程の確認
最適化の結果、プログラマーの予想もしないプログラムに変化したりしないとか
その確認をする。勉強にもなるね。
某本にもデバッガでは、シングルステップを使えと載っていた。目から鱗。
0221デフォルトの名無しさん
NGNGGHCか何かだと、unsafeとか何とかいうモジュールに、
どこでもprintできる関数がなかったっけ。
まさにprintfデバッグのための抜け道として。
0222デフォルトの名無しさん
NGNGそれは要するにデバッガがアナライザだって言ってるだけでは?
そういうのとは微妙に話が違うような気がするなー。
つまり、デバッガにはそういうブラウジング機能とは別に
何かあるって言ってるんだろ?
0223デフォルトの名無しさん
NGNGいや、デバッグ以外に使い道があるかどうかって話だろ?
だからアナライザとして使ったり、ってのも答えとしてアリだろ。
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGデバッガがバグを指摘するわけじゃなし。
0227デフォルトの名無しさん
NGNG書くのが遅い
0228デフォルトの名無しさん
NGNG遅延評価だと、どのprintが先に実行されるかわかんなくねえ?
そんなんでデバッグできるのか?
0229デフォルトの名無しさん
NGNG何をデバッグしたいかによるけど。
(文字列やファイルの最終的な内容も含めた)計算結果が
正しければ良いなら、別に求まる順序は重要じゃないよね。
まあprintを使うってことは順序も気にするんだろうから、
もともと$!やseqを使いまくってるんじゃないの?
0230haskell
NGNG0231デフォルトの名無しさん
NGNG0232Super Combinator
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4764901811/qid=1022390348/sr=1-17/ref=sr_1_2_17/250-5692221-3686632
萩谷昌己「関数プログラミング」
http://www.amazon.co.jp/exec/obidos/ASIN/4535608172/250-5692221-3686632
あたりで。
0233デフォルトの名無しさん
NGNG竹内先生の Lisp本もじつは読んでないんだよなあ。
0234デフォルトの名無しさん
NGNGSMLだって出てるのに……。
0235デフォルトの名無しさん
NGNG日本のHaskellユーザの数が、初回印刷部数(200)を越えたら。
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGそこが特別なんじゃないの?
0239デフォルトの名無しさん
NGNG訳本でいいからさ。
0240デフォルトの名無しさん
NGNGいろんな図書館に要望しまくれば、
なんとかなるんじゃないの?
0241デフォルトの名無しさん
NGNGhttp://www.onweb.to/ken9/log/039.htm
0242デフォルトの名無しさん
NGNGここのところ素人も増えてるぞ>オレオレ
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG東京ビッグサイトの巨大同人誌即売会サークル抽選当選しますた。
でもジャンルはプログラミング言語とはホド遠いけど(w。
0245デフォルトの名無しさん
NGNG適当でいいからHaskell本もきぼんぬ
買いに行くから(藁
0246244
NGNGって、実際問題としてHaskell本を作る余力はなし。
0247デフォルトの名無しさん
NGNGR. Birdの「関数プログラミング」第2版を翻訳して出版して欲しい。
流れで近代科学社に。
0248デフォルトの名無しさん
NGNGみなしHaskell本では。
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG結局、日本語のHaskellの本て有るんですか?
無いんですか?
(というのか無いのか?)
0251デフォルトの名無しさん
NGNGおどろき。
どんな研究なんだ!?
0252デフォルトの名無しさん
NGNGならむしろおまえの研究室で発行しる!
0253デフォルトの名無しさん
NGNGPurely functional languages like Haskell
are excellent within certain niches,
but many simple programming exercises
can quickly turn into problems that require a PhD. to solve.
大げさだな・・・
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258Super Combinator
NGNG■ このスレッドは過去ログ倉庫に格納されています