1 名前:潜伏していた1 mailto:sage [02/02/16 16:55] 何とか生き残れました。 前スレ pc.2ch.net/test/read.cgi/tech/996131288/l50 関連 >>2 以降
737 名前:デフォルトの名無しさん mailto:sage [03/07/21 02:59] >>733-736 そんなことをする必要はない。 randoms (mkStdGen 1) ::[Int] のようにして無限乱数列が作れるのだから。 Make use of the power of lazy evaluation ! # あとはそれにmapでもなんでもして加工すればいい。
738 名前:デフォルトの名無しさん mailto:sage [03/07/21 15:25] ハクションと似てなくもないような
739 名前:デフォルトの名無しさん mailto:sage [03/07/21 19:05] >>737 なるほど!遅延評価を忘れてました。 しかしそれでも2個の乱数を取ってきたい時は、let (r1:r2:rs') = rs (以降はrs'から取る) みたく 乱数列を意識して渡していかないといけないような。いや、ずっと書きやすいではありますが。
740 名前:デフォルトの名無しさん mailto:sage=732 [03/07/21 20:22] >>734 知らん。気になるのなら、たとえば、こうすればちゃんとモナドになる。 module Main where instance (Num a) => Monad ((,) a) where (>>=) (sub, main) f = (sub+sub', main') where (sub', main') = f main return main = (0, main) >>733 まずちょっと修正...スマソ。 import Monad -- 追加 instance Monad ReadR where ReadR r >>= fr = ReadR (\str -> [ret| (v,str') <- r str, ret <- fr v `runr` str']) return v = ReadR (\str -> [(v, str)]) fail s = mzero -- 以下追加 instance MonadPlus ReadR where mzero = ReadR (\s -> []) mplus (ReadR f) (ReadR g) = ReadR (\s -> f s ++ g s) 用途としては、下のようなコード(やさしいHaskell 8.3節からコピペ)のtuvwxのような変数を書かなくてもよくすること。それだけです。 >readsTree :: (Read a) => ReadS (Tree a) >readsTree s = [(Branch l r, x) | ("<", t) <- lex s, > (l, u) <- readsTree t, > ("|", v) <- lex u, > (r, w) <- readsTree v, > (">", x) <- lex w] > ++ > [(Leaf x, t) | (x, t) <- reads s]
741 名前:デフォルトの名無しさん mailto:sage=740 [03/07/21 20:26] 上のコードのReadR版 >rreadTree :: (Read a) => ReadR (Tree a) >readsTree s = rreadTree `runr` s >rreadTree = do "[" <- rlex > l <- rreadTree > "|" <- rlex > r <- rreadTree > "]" <- rlex > return $ Branch l r > `mplus` > do x <- rread > return $ Leaf x
742 名前:デフォルトの名無しさん mailto:sage [03/07/21 20:38] >>739 なんかまだ手続き型の頭のような気がする:) 関数型だったら結局繰り返しは再帰で書くんだから、 結局こんな感じになると思う。 f 0 result rs = result f n result (r1:r2:rs) = f (n - 1) (g r1 r2 result) rs # f 10 [] randomlist のように使う。 # g で欲しいものを計算。
743 名前:デフォルトの名無しさん mailto:sage [03/07/21 20:39] う、結局が二つも。
744 名前:デフォルトの名無しさん mailto:sage [03/07/22 01:26] >> 740 Num a が気になる
745 名前:デフォルトの名無しさん mailto:sage [03/07/23 22:09] GHCって実はfromIntが無かったりします…? Variable not in scopeと言われるのですが
746 名前:デフォルトの名無しさん mailto:sage=740 [03/07/24 01:42] >744 気にするな。
747 名前:デフォルトの名無しさん [03/07/24 10:52] >>745 fromInteger じゃだめなの? 今のHaskell 98 の Prelude には fromInt は無いのでは。
748 名前:デフォルトの名無しさん mailto:sage [03/07/24 20:52] >>747 いえ、Intからの変換にfromInteger (toInteger n)と書くのが冗長な気がしただけです。
749 名前:デフォルトの名無しさん [03/07/29 00:04] >>748 Enum クラスのメソッドが使えるのでわ。 toEnum :: Int -> a fromEnum :: a -> Int
750 名前:デフォルトの名無しさん mailto:sage [03/08/01 10:11] >>749 FloatやDouble…のつもりでしたが、それらもtoEnumでいけるのですね。 ありがとうございます。そして遅レスごめんなさい
751 名前:デフォルトの名無しさん [03/08/02 01:34] ニセ手続き型?の基本的なもなどはなんとなくわかった(というか「同じやん」ということで) けど、それ以外のモナドがワカンネ。 ライブラリ読んでみたりしたけど激むず。 モナド難しいですね。 ニセ手続き型を理解したあとは、どうしたらよいのでしょうか
752 名前:デフォルトの名無しさん mailto:sage [03/08/02 19:05] GHCのText.Regexで matchRegex (mkRegex "abc") "xabcx" => Just [] matchRegexAll (mkRegex "abc") "xabcx" => Just ("x","abc","x",[]) これってバグ?
753 名前:デフォルトの名無しさん mailto:sage [03/08/02 19:42] あ、二つ目は書き間違い。 matchRegexAll (mkRegex "abc") "xabcx" => Just ("","abc","x",[])
754 名前:デフォルトの名無しさん mailto:sage [03/08/02 19:54] モナドの問題点とかは特に上がってないのですか? 実行効率周りとか。
755 名前:デフォルトの名無しさん mailto:sage [03/08/08 01:02] GHC 6.0.1 Released
756 名前:デフォルトの名無しさん mailto:sage [03/08/08 07:07] >>755 いただきました
757 名前:デフォルトの名無しさん mailto:sage [03/08/11 13:30] 素朴な疑問なのですが Haskell の言語使用はかなり頻繁に変わるものなのでしょうか? 2000年あたりに出版された本で勉強しようかと思っているのですが、それいらい大きく変わったとか、 近いうちに大きく変わるとか、ありますか?
758 名前:デフォルトの名無しさん mailto:sage [03/08/12 00:36] 基本はHaskell98から変わってないんじゃないだろうか。 処理系によっては独自拡張があることも。
759 名前:デフォルトの名無しさん mailto:sage [03/08/12 21:05] >>758 サンクスコ。 言語仕様は大きく変わってないから、そのころの本で勉強しても問題ないということですね。 がんばって勉強してみます。 (関数型言語は使ったことがないから、なじめるかわからないけど)
760 名前:デフォルトの名無しさん mailto:sage [03/08/13 20:49] 確かに言語仕様はほとんど変わっていないが、 ライブラリがかなり違うような気がする。 ライブラリは階層化ライブラリ(Data.Listとか) で決まりでいいのだろうか。 標準ライブラリ以外になると混沌としか言い様がない
761 名前:デフォルトの名無しさん mailto:sage [03/08/13 21:45] Hugsもライブラリを2通り持ってるね。
762 名前:デフォルトの名無しさん mailto:sage [03/08/13 22:52] www.haskell.org/onlinelibrary/ ここにあるのが標準ライブラリーで、足りない部分は、 www.haskell.org/libraries/ から探すとか、自作するということですか? www.haskell.org/ghc/docs/latest/html/libraries.html で、これが HUGS についてくるライブラリー群?
763 名前:デフォルトの名無しさん mailto:sage [03/08/14 00:53] Hugsのライブラリについて書いてあるよ。 cvs.haskell.org/Hugs/pages/hugsman/libs.html GHCは5.04.1=>6.0でライブラリ関係が少し変わっているような気がする。
764 名前:デフォルトの名無しさん mailto:sage [03/08/15 02:04] 前スレは約一年に使い切ったのに、part2 に移行して少し停滞してます。
765 名前:デフォルトの名無しさん mailto:sage [03/08/15 02:29] www.cse.ogi.edu/ 〜hook/cse532f99/haskell1.htm ↑赤黒木の実装に感動。 だれか、コンパクトなdelete実装しれ!
766 名前:山崎 渉 mailto:(^^) [03/08/15 16:09] (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
767 名前:デフォルトの名無しさん [03/08/19 11:49] 6.0.1入れたらwxHaskellが使えなくなっちまった
768 名前:デフォルトの名無しさん mailto:age [03/08/19 15:54] win de GUI no hito mada-?