[過去ログ]
関数型プログラミング言語Haskell Part22 (1001レス)
関数型プログラミング言語Haskell Part22 http://echo.5ch.net/test/read.cgi/tech/1364009659/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
50: デフォルトの名無しさん [sage] 2013/03/23(土) 12:35:09.00 Types And Programming Languages って、ついに翻訳されたんだな http://www.amazon.co.jp/dp/4274069117/ くっそ高いけど http://echo.5ch.net/test/read.cgi/tech/1364009659/50
105: デフォルトの名無しさん [sage] 2013/03/23(土) 12:36:04.00 Haskellのコードリーディングって難しくない? たとえばFRPライブラリ reactivce の特徴である Sink と Event の仕組みや実際の振る舞いについて調べたいとする。 というのも、makeEvent 関数でタプル (sink, event) を作ると、 あたかも、プログラム内のある場所で sink を評価すると、 全く別の場所にある event が反応したかのように表面上は振る舞って、 なかなか興味深い。 だが、とりあえず Sink a の型を見ても a -> Action としか分からない。 makeEvent 関数のソースを見ても、いきなり (fmap.fmap) が出てくるし。 こういう場合は、adaptE 関数から順に自分で簡約しながら見ていく方が良いのかな。 (reactive のチュートリアルでは皆 adaptE 関数から実際の計算が始まる) C/C++ だと比較的大きな機能がまとまって書かれているけど、 Haskell だと非常に細かい機能が関数呼び出しという数珠繋ぎで表現されていて、 それらがソース中のバラバラの場所に書かれていたりするから、 なかなか C/C++ と同じ要領ではコードリーディングしにくい。 Haskell としてコードが洗練されているほど、振る舞いが追いにくい印象。 もしかしたら、同じようにできるのかも知れんが、何かコツでもあるのかな。 http://echo.5ch.net/test/read.cgi/tech/1364009659/105
143: デフォルトの名無しさん [sage] 2013/03/23(土) 12:36:42.00 >>141 あるアルゴリズムがあって 有限個のデータ(具体的には関数記号)に適切な順序構造を与えたときに停止して適切な結果を返してくれるのですが その順序構造を探すためにプログラム中で順序を動的に変えたいです http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%8C%E3%83%BC%E3%82%B9%E3%83%BB%E3%83%99%E3%83%B3%E3%83%87%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%E5%AE%8C%E5%82%99%E5%8C%96%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0 http://echo.5ch.net/test/read.cgi/tech/1364009659/143
278: デフォルトの名無しさん [sage] 2013/03/23(土) 12:38:57.00 >>277 Haskellをメインで使ってるってパフォーマンスは満足いく? haskellで使ってないはずのメモリ使用量が徐々に増えていかないサーバって書ける? モナディウスもメモリ使用量の増加が止まらないわけだけど http://echo.5ch.net/test/read.cgi/tech/1364009659/278
341: デフォルトの名無しさん [sage] 2013/03/23(土) 12:40:00.00 The Glorious Glasgow Haskell Compilation System, version 7.4.2を使っています。 uniq :: Eq a => [a] -> [a] uniq [] = [] uniq [x] = [x] uniq (x1:xs@(x2:_)) | x1 == x2 = uniq xs | x1 /= x2 = x1 : uniq xs というコードを書いてコンパイルすると、 retu.hs:27:1: Warning: Pattern match(es) are non-exhaustive In an equation for `uniq': Patterns not matched: _ : (_ : _) と言われます。 このuniqの定義は自分にはexhaustiveに思えるのですが、 何か見落としているのでしょうか。 http://echo.5ch.net/test/read.cgi/tech/1364009659/341
531: デフォルトの名無しさん [sage] 2013/03/23(土) 12:43:10.00 >>527 > Haskellでのゲーム作成方法ないからな〜 それが義務教育時代の勉強みたいと言っているのだが・・・ スペースインベーダーを作ってみたいのなら、それを作るのに必要なものは何か考えようよ。 グラフィックスをスクリーンに描く事、コントローラーからの入力を処理する事、 時間の経過に伴ってキャラクタを生んだり消したりする事、などなど。 で、それをするのに今自分に不足している知識は何か考えてみればいいじゃん。 そして、こういう事をやりたくて、こういう事をする必要があるんだけど、 Haskell ではどうやってやるの? こういう方法を考えてみたけどうまくいかない、 とか質問すればいいんだよ。 最初は個々の事柄に対してそれぞれバラバラに集めた方法やテクニックを継ぎ接ぎするんだから、 きっとHaskell熟練者みたいな綺麗な形にはまとめられないと思う。 でも、そこから少しずつブラッシュアップしたり、時には一から作り直したりするんだよ。 俺はそうやって勉強していくのをお勧めする。 質問時には、俺の持っている知識が役に立ちそうならアドバイスするし。 (他の人もアドバイスしてくれるでしょう) > 何か皆さんが”初心者はこれが出来たらいいぞ〜”的な問題があったらうれしい。 言っておくけど、君はもうとっくに初心者じゃないんだよ。 いつになったら初心者気分が抜けるのかな。 誰かに、これができたら初心者卒業だと認めてもらわないと不安かな。 (ちなみに、Haskellでインベーダーゲームを作る方法の一つを紹介した [The Yampa Archade] という論文がフリーで読めるが、いきなりこれはお勧めしない) http://echo.5ch.net/test/read.cgi/tech/1364009659/531
557: デフォルトの名無しさん [] 2013/03/23(土) 12:43:36.00 ID:lZ0F4JgH! >>556 foldlって無限のリストでも使用できるんですよね。 ま〜take, drop, map, zip, filter位は何とか覚えるようにしてます。 Haskell覚えること多いな。 algbraic type は自分でdata使って独自の型を作れるのは分かったノですが,abstract data typeが理解できない。 既存のIntやBool型などブラックボックス化されてるのがそうなのですか? http://echo.5ch.net/test/read.cgi/tech/1364009659/557
609: デフォルトの名無しさん [sage] 2013/03/23(土) 12:44:28.00 質問です これがOKで Prelude> product [x | x <- [1..10000] , mod x 10 /= 0 , mod x 10 /= 2 , mod x 10 /= 5] これがNGなのは何故ですか? Prelude> product [x | x <- [1..10000] , not $ (mod x 10) <- [0,2,5] ] <interactive>:15:36: Parse error in pattern: mod http://echo.5ch.net/test/read.cgi/tech/1364009659/609
618: デフォルトの名無しさん [] 2013/03/23(土) 12:44:37.00 fact n = fact-tail n 1 where fact-tail 1 acc = 1 fact-tail n acc = fact-tail (n - 1) (acc * n) みたいに素直に再帰で書き下せるところをいちいち末尾再帰に書き換えるように なってしまいました。 こういうのってプログラム見にくいんじゃないかなぁと思いますが、 どうでしょうか? 好きにしろって言われるかもしれませんが http://echo.5ch.net/test/read.cgi/tech/1364009659/618
731: デフォルトの名無しさん [sage] 2013/03/23(土) 12:46:30.00 とりあえず、よくあるもっとも簡単な実装はこれかな。 qs :: (Ord a) => [a] -> [a] qs [] = [] qs (x:xs) = qs (filter (< x) xs) ++ [x] ++ qs (filter (> x) xs) 空間計算量が最悪O(n^2)になるケースってのは、どういうリストに適用した時? http://echo.5ch.net/test/read.cgi/tech/1364009659/731
739: デフォルトの名無しさん [sage] 2013/03/23(土) 12:46:38.00 *Main> :type (+) (-) (+) (-) :: (Num (a -> a -> a), Num a) => (a -> a -> a) -> a -> a -> a これを解説してください。(+) を数ではない (-) に適用できる? http://echo.5ch.net/test/read.cgi/tech/1364009659/739
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.060s