関数型プログラミング言語Haskell Part3
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
NGNGhttp://www.haskell.org/
日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
Http://www.teu.ac.jp/kougi/koshida/Prog6/index.html
過去ログ、関連スレは>>2-5
0809デフォルトの名無しさん
2005/12/20(火) 10:47:45readsPrecとreadListの作り方のチュートリアルか何かないでしょうか(できればShowの方も)
Haskell98Report読んでもサッパリです
0810デフォルトの名無しさん
2005/12/20(火) 13:02:57Nil == Nil = True
Cons x xs == Cons y ys = x == y && xs == ys
_ == _ = False
0811デフォルトの名無しさん
2005/12/20(火) 18:59:40なるほど。納得です。
>>810
こうすると出来ますね。
Eq クラスのインスタンスに制限されるってこういうことだったのですね
有難うございました。
0812デフォルトの名無しさん
2005/12/21(水) 23:26:59チュートリアルじゃないけど、GHC.Readにいくつかinstanceの例がある。
http://cvs.haskell.org/cgi-bin/cvsweb.cgi/fptools/libraries/base/GHC/Read.lhs?rev=1.29;content-type=text%2Fplain
理解したら、是非チュートリアルを書いてくれ。
0813 ◆SaiTAMaVxg
2006/01/09(月) 08:32:36/ ̄\ ♪
〜(゚ ∀ 。 )⌒
♪ \_/ 彡
ノ ι ヽ
♪ .ハ
,ヘ ((
)ノ .))
(( ∧∧//
\(゚∀゚ )
) ノ ヾ ♪
ミ シ´ / ,γ
ミ r´ ( ∧∧//
ヽ、 ヽ 彡 ♪ ( ゚∀゚)'
) ノ 彡 .,/ ヽ ミ
ノ ,、( ノ ノヽ l
r´/ ) ) ミ (´/ ノ ノ
( ( ( ( γ´ (´
ヽ) ヽ\ ノ ハ ヽ ♪
ノ ) . / ,,/ (,,ノ 彡
♪ (__ノ (_,,ノ
0814デフォルトの名無しさん
2006/01/22(日) 22:44:58パフォーマンスが凄いことになってる。
0815デフォルトの名無しさん
2006/01/23(月) 00:03:09「Cはやっぱり速いなあ」とか「インタプリタはやっぱり遅いなあ」とか
「Javaはやっぱりメモリ喰いだなあ」とか思うだけで、
「関数型言語頑張ってるな。ちょっと使ってみるか」とは全く思ってくれない罠。
0816デフォルトの名無しさん
2006/02/02(木) 21:41:39C++みたいな言語の「thisの省略」がすごく羨ましいんだけど、
似たようなことをHaskellっぽく書けないものだろうか。
implicit parameterでそれなりに書けそうだけど、
使われてるのを見たことがない。
みんな明示的に引数を持ち回るのが苦痛じゃないのか?
0817デフォルトの名無しさん
2006/02/02(木) 23:15:17そんな君にReaderT。
StateTでもいいぞ。
0818デフォルトの名無しさん
2006/02/02(木) 23:46:36おー、ありがとう。
この目的のためにReaderモナドで計算順序を導入するのには抵抗があったけど、
既にもなでぃっくなコードにReaderTを混ぜ込むなら面倒が少ないな。
0819デフォルトの名無しさん
2006/02/05(日) 07:29:060820デフォルトの名無しさん
2006/02/05(日) 07:47:590821デフォルトの名無しさん
2006/02/05(日) 08:28:420822デフォルトの名無しさん
2006/02/05(日) 10:42:57Haskellでは困難。
・C++では名前空間・クラス・関数をかなり自由に相互ネストさせられるし、
ネストに従って細かくスコープを分けてくれるのに対して、
Haskellの名前空間はフラットで、レコードのフィールド名のスコープがモジュールレベルだったり、
関数に局所的な型の定義ができなかったりして不便。
・互いに関連のないものに同じ名前を与えるC++風の多重定義は難しい。
やってできないことはないけど、想定された言語の使いかたではないだろう。
0823デフォルトの名無しさん
2006/02/06(月) 00:21:58モナディウスを参考にシューティングゲーム作るぞ。うぉー!
0824デフォルトの名無しさん
2006/02/06(月) 00:33:36マジ応援してる。
0825デフォルトの名無しさん
2006/02/06(月) 03:51:370826デフォルトの名無しさん
2006/02/06(月) 06:11:44>>814
0827デフォルトの名無しさん
2006/02/06(月) 07:33:29俺のような凡人が普通に書いたらめっちゃ遅い。
0828デフォルトの名無しさん
2006/02/06(月) 09:10:24バグは少ないわ高速だわの最強のコードが生成されるのですね?
それとも、キモいコードってのはバグを許す代わりに高速にするとかいう類の話?
0829デフォルトの名無しさん
2006/02/06(月) 22:46:13http://shootout.alioth.debian.org/gp4/benchmark.php?test=nbody&lang=ghc&id=4
・コンパイルが大変で、
・コードが読みにくい分バグが多く、
・遅い
0830デフォルトの名無しさん
2006/02/06(月) 23:05:14>・コンパイルが大変で、
どういう意味?
0831デフォルトの名無しさん
2006/02/07(火) 05:53:35参考書がきっと1万とか法外な値段でしょ?
手が出ません><
0832デフォルトの名無しさん
2006/02/07(火) 06:09:11集合論と一階述語論理について勉強済みだからなんだよね?
0833デフォルトの名無しさん
2006/02/07(火) 10:27:09使うだけなら数学の話は特に必要ないよ。たぶん。
0834デフォルトの名無しさん
2006/02/07(火) 11:00:550835デフォルトの名無しさん
2006/02/07(火) 16:18:330836デフォルトの名無しさん
2006/02/07(火) 16:28:17とは大学の教官の弁。単位きたかなあ。
0837デフォルトの名無しさん
2006/02/07(火) 16:54:310838823
2006/02/07(火) 17:13:22みんなで速くするんだと思います><
CやFORTRANが速いのは多分歴史が長いからだと思ってる
--以下チラシの裏
今日やったこと:eclipseの日本語化とFPの導入
一言:eclipseをeclispだと思ってて「HaskellなのになんでLisp?」とか考えてた。英語弱いな、俺
今からやること:エヴァの映画借りてきて見る
0839デフォルトの名無しさん
2006/02/07(火) 21:16:35だからプロトタイピングなんだろ。
物好きがいろいろやってはいるけど、どう考えても研究用途の言語だよな。
だから意味がないというわけではないが。
0840デフォルトの名無しさん
2006/02/07(火) 21:46:46ちょっとお前は論点ずれてるよな。
0841デフォルトの名無しさん
2006/02/07(火) 22:30:09liftMとか素人なら完全に御手上げ。
あと、何この演算子?ってのを使ってる
(.|. (shiftL i 3)) -- google氏も無視
逆にhaskellが神言語になってる例
http://shootout.alioth.debian.org/gp4/benchmark.php?test=pidigits&lang=dlang&id=0
http://shootout.alioth.debian.org/gp4/benchmark.php?test=pidigits&lang=ghc&id=3
d 言語90行
haskell 11行
実行速度ほぼ同じ
理由
Integer型が使える
Monadを使う必要もMonad持ち上げをする必要がない。(配列を使う必要がない)
0842デフォルトの名無しさん
2006/02/08(水) 18:30:21たぶん、すぐ慣れると思う。
>(.|. (shiftL i 3)) -- google氏も無視
そんなあなたにHoogle
http://www.haskell.org/hoogle/?q=.%7C.
0843デフォルトの名無しさん
2006/02/08(水) 21:20:50すげー。
型から検索できるのがHaskellらしいな。
0844デフォルトの名無しさん
2006/02/09(木) 09:48:51手にとるようにわかるのですか?
私はどう書いたら速いコードになるのかいまいちわかりません。
0845デフォルトの名無しさん
2006/02/09(木) 13:07:28速いコードを書くのが目的なら関数型言語など、いや、
高級言語など使うのはお止めなさい。
0846デフォルトの名無しさん
2006/02/09(木) 13:19:59効率が足らないことが分かったとき、そこをアセンブリで書き直す代わりに
既にあるHaskellのコードをいじって効率を確保する、というのは、
それなりに合理的だと思うんだが。
0847844
2006/02/09(木) 13:44:180848823
2006/02/09(木) 14:15:14多分、どんな順序で書いてもコンパイラが同じように並べかえてくれるんじゃないかなぁ?
コンパイラが考えうる中で最も効率的なコードが出るようにね
0849デフォルトの名無しさん
2006/02/09(木) 14:16:51非正格になれてないだけ。
0850デフォルトの名無しさん
2006/02/09(木) 19:00:420851デフォルトの名無しさん
2006/02/09(木) 22:26:31Cよりhaskellの方が速いコードが書けるはず。
なぜならば、見栄え良く、簡潔に書け(簡潔じゃないとコンパイルできない)
無駄なく書けるから。
cだと、綺麗なコードを書くために無駄なコードを書きまくると思うし、
汚い普通のコードを書いても、Haskellと同程度しか速くならない。
cの有利な点は、
gcがない, 配列操作, アセンブラ的コードが書ける, 速いライブラリがある。
と言ってみる。
0852デフォルトの名無しさん
2006/02/09(木) 22:37:03>>851
>なぜならば、見栄え良く、簡潔に書け(簡潔じゃないとコンパイルできない)
これは速いコードとは関係ないんじゃないの?
早くコードを書く事は出来るのかもしれないが。
0853デフォルトの名無しさん
2006/02/09(木) 22:37:180854デフォルトの名無しさん
2006/02/09(木) 22:39:540855デフォルトの名無しさん
2006/02/09(木) 23:28:22add
0856デフォルトの名無しさん
2006/02/10(金) 03:01:51これ最新最強。newなんていりませんから!
0857デフォルトの名無しさん
2006/02/10(金) 10:53:420858fortran
2006/02/10(金) 10:55:080859デフォルトの名無しさん
2006/02/10(金) 12:50:240860デフォルトの名無しさん
2006/02/10(金) 15:32:11今となってはコンパイラが吐くアセンブラの方が速いことが多いけどね
0861デフォルトの名無しさん
2006/02/10(金) 15:53:170862デフォルトの名無しさん
2006/02/10(金) 16:26:100863デフォルトの名無しさん
2006/02/10(金) 16:27:27危険だからさ。
お行儀の良いハスケルにはわからんだろうがね。
0864デフォルトの名無しさん
2006/02/10(金) 16:40:00バカですか
>>857
バカですか
>>859
バカですか
>>862
バカですか
Haskellに関しての議論としては論点がずれているぞ。
Haskellを創った人たちは、お前らが気にしていることはすべて解っているし、そんなことを解決するための言語にしようとは考えていないんだよ。
言語仕様に関しては。言語仕様という表現も好きじゃないけど。
0865デフォルトの名無しさん
2006/02/10(金) 16:49:34アライグマみたいだね。
0866デフォルトの名無しさん
2006/02/10(金) 16:54:41必死だな。
マジレスすると、「Haskellを創った人たち」の意図などどうでも良い。
いったん言語ができあがってしまえば、それをどう使おうが勝手だ。
0867デフォルトの名無しさん
2006/02/10(金) 16:59:560868デフォルトの名無しさん
2006/02/10(金) 18:57:08Hudak? Peyton Jones? Wadler?
0869844
2006/02/10(金) 21:21:30>>849
これでも、もう一年以上使ってるんですよ。ヘボプログラマーなもんで...。
0870デフォルトの名無しさん
2006/02/10(金) 22:11:16小さくなる可能性がある Haskell には期待してるんだがなあ.
0871デフォルトの名無しさん
2006/02/10(金) 22:23:040872デフォルトの名無しさん
2006/02/10(金) 22:42:30http://wiki.ocaml.jp/index.php?%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC%A4%CE%C8%E6%B3%D3
デフォルトで遅延評価なのか、指定したときだけ遅延評価なのか。
破壊的代入を許さないのか、許すのか。
速度に影響しそうな所というとこの辺の違いかな?
0873デフォルトの名無しさん
2006/02/10(金) 22:46:32そんな激しい最適化をするHaskellコンパイラはないと思うが。
0874デフォルトの名無しさん
2006/02/10(金) 23:59:120875デフォルトの名無しさん
2006/02/11(土) 00:19:45極端に遅い欠点がないのと、重みが高い数個のプログラムで稼いでるだけ
みたいだな。勝ってる数だけで見たらJavaにも勝てない。
0876デフォルトの名無しさん
2006/02/11(土) 05:57:500877デフォルトの名無しさん
2006/02/11(土) 09:05:41で死にやがった。遅延評価も万能じゃないんだな。
0878デフォルトの名無しさん
2006/02/11(土) 09:28:58reverse $ reverse ≡ id
だからなあ。
0879デフォルトの名無しさん
2006/02/11(土) 09:29:52reverse $ reverse ≠ id
の間違い。
0880デフォルトの名無しさん
2006/02/11(土) 11:29:59reverse xs returns the elements of xs in reverse order. xs must be finite.
0881デフォルトの名無しさん
2006/02/11(土) 11:41:15だけって・・・
俺の感覚ではそういうのは、
「なんでもそつなくこなす優秀なやつ」だよ。
一番になること以外には意義を感じないのかい?
0882デフォルトの名無しさん
2006/02/11(土) 12:26:06でも半分以上は平均的に結構遅いんだよ。。。
他の言語みたいに極端に遅いってのはないけど、
そういうのはアルゴリズムの欠陥があったり、その言語での普通の
やり方と違うといった何かしらの事情があることが多いし。
0883デフォルトの名無しさん
2006/02/11(土) 16:01:00ってあるのはJDKでは苦手分野の可能性が高い。
負けてる sum-file や random なんて Cleanがトップだから、
似たようにやれば(内部含む)haskellでもトップになる可能性はある。
(reverse-components はocaml 一位 Clean2位)
javaには負けてるとはいえない。
0884デフォルトの名無しさん
2006/02/11(土) 16:42:24この訴えはム板のあらゆるスレで続けていくつもりです。
0885デフォルトの名無しさん
2006/02/11(土) 16:51:190886デフォルトの名無しさん
2006/02/11(土) 16:53:58頑張れ
Lisp厨やRuby厨に負けるなよ
0887デフォルトの名無しさん
2006/02/11(土) 17:34:340888デフォルトの名無しさん
2006/02/11(土) 18:32:12訴えにはそれ相応の証拠がいるんだ。
説得力がある資料を添えて出直せ。
0889デフォルトの名無しさん
2006/02/11(土) 19:54:290890デフォルトの名無しさん
2006/02/11(土) 20:01:180891デフォルトの名無しさん
2006/02/11(土) 20:04:000892デフォルトの名無しさん
2006/02/11(土) 20:09:58CPU Timeの重みを1にして他を0にしてみ。
OCaml 34.77 1
C gcc 32.82 3
D Digital Mars 29.86 2
Haskell GHC 28.69 0
C++ g++ 25.76 2
SML MLton 24.70 3
Eiffel SmartEiffel 24.36 5
Nice 23.45 3
Java JDK 1.4 -server 22.21 4
Clean 22.01 6
Java JDK -server 21.87 4
Ada 95 GNAT 20.25 4
Java JDK -client 18.84 4
Fortran G95
まあでも正直、この順位も絶対現実とはかけ離れてるよな。
やっぱ、コミュニティの熱意とかが反映されるんだろうな。
0893デフォルトの名無しさん
2006/02/11(土) 20:20:21>Nice 23.45 3
プログラミング言語Nice (ワラ
0894デフォルトの名無しさん
2006/02/11(土) 20:35:56そういう変な順位になる。
例えば、CとHaskellを見るとCのchameneosとregex-dnaが
極端に遅いことがわかる。
こういうのはアルゴリズムの欠陥か何かの特殊事情だから除いて
考えるべきだというのは、具体的な数値を見てみるとよくわかるだろう。
0895デフォルトの名無しさん
2006/02/11(土) 21:07:440896デフォルトの名無しさん
2006/02/11(土) 21:09:32いずれにせよ本来の速さとは違うだろう。
0897デフォルトの名無しさん
2006/02/11(土) 21:12:07順位であることがわかるな。
0898デフォルトの名無しさん
2006/02/11(土) 22:00:20OCamlとかCleanとかHaskellとか:凡人がやっつけ仕事してもそこそこ速い
ってことでFA?
スレ違いだけど、今日初めてGoogle Earthをインスコしたんだ。
超セクシーだね! あんなのをHaskellで書いてみたい
0899デフォルトの名無しさん
2006/02/11(土) 22:08:030900デフォルトの名無しさん
2006/02/11(土) 22:46:14後者は言語オタク・エキスパート・信者が、Shootoutのために
必死になってソース作ってそうだけどなw
0901デフォルトの名無しさん
2006/02/11(土) 22:46:470902デフォルトの名無しさん
2006/02/11(土) 22:47:400903デフォルトの名無しさん
2006/02/12(日) 01:24:02http://item.rakuten.co.jp/book/1794880
0904デフォルトの名無しさん
2006/02/12(日) 05:16:07あきらかに実力以上の評価なわけで。
素人が普通に作ったらJavaといい勝負ってのが正直な感想。
0905デフォルトの名無しさん
2006/02/12(日) 09:51:08ノーベル賞とまではいかないがなかなか強力に安定した結果を叩きだし、堅物で融通がきかない。
0906デフォルトの名無しさん
2006/02/12(日) 12:18:48確かに言語仕様が優れていて、使ってる人が非常に優秀なのは
確かなんだが、速くはない。
Shootoutがいい成績なのも使ってる人が優秀なのと、他の言語が
力入れてないだけ。
0907デフォルトの名無しさん
2006/02/12(日) 12:33:29つまり、まだまだ未成熟段階ってこと。
Shootoutの順位なんてそんなもん。
0908デフォルトの名無しさん
2006/02/12(日) 12:38:23血液型占いと同じぐらいオカルト。
バカですか。
レス数が900を超えています。1000を超えると表示できなくなるよ。