1 名前:潜伏していた1 mailto:sage [02/02/16 16:55] 何とか生き残れました。 前スレ pc.2ch.net/test/read.cgi/tech/996131288/l50 関連 >>2 以降
385 名前:デフォルトの名無しさん mailto:sage [02/08/20 09:14] >>383 宿題は自分でやりましょうね。
386 名前:デフォルトの名無しさん mailto:sage [02/08/20 11:42] Haskellって、 学校の授業でどのくらい使われてるの?
387 名前:日曜Haskellerオヤジ [02/08/20 12:50] 宿題だとすると・・・そのまま答えを書いたらまずいかな(笑 私だったらこんな感じで作りますかね。 見ているとスペースのところで文字列が切断されていて非常に感じが悪いのでそれをまず結合します。 つづいてこの文字列リストから ":" , ";" を取り除いて出来上がり
388 名前:日曜Haskellerオヤジ [02/08/20 12:52] おまけ 結合すべき文字列は直後が ";" ":" でないことに着目すると簡単に作れるでしょう。
389 名前:383 mailto:sage [02/08/20 12:55] 「Haskell言語プログラミングレッスン <上> Haskell言語を始めよう」 「Haskell言語プログラミングレッスン <下> 関数型言語を始めよう」 出版準備です。
390 名前:デフォルトの名無しさん mailto:sage [02/08/20 13:02] 出版準備?大丈夫かよオイ
391 名前:デフォルトの名無しさん mailto:sage [02/08/20 13:04] ネタだろ…
392 名前:日曜Haskellerオヤジ [02/08/20 13:11] よく見てみると、単に複数文字列があるだけじゃなくて、 レコードみたいになっていますね ';' ':' ブラウザはの見分けがつかない 間違っているので上記2レスは無しということでお願いします ';' でいったん文字列リストのそのまたリストに分解して 先頭を順序対の左 上記を取り除いた上での、先頭と末尾を取り除いた文字列の結合を右の順序対として リストを作ればよいみたいですね。
393 名前:日曜Haskellerオヤジ [02/08/20 13:25] >>389 本当ならうれしいですね、ちょっと作ってみましょう、しばらくかかります。
394 名前:デフォルトの名無しさん [02/08/20 13:27] 個人的には関数の型が気にいらんな。 type Assoc = [(Field, Value)] lookupAssoc :: [Key] -> Assoc -> Assoc をつくれ、としたほうが抽象化のレベルがあうのでないか。まあ、 parseAssoc :: [Token] -> Assoc をつくって lookupTokens :: [Key] -> [Token] -> [(Field, Value)] lookupTokens keys tokens = lookupAssoc keys (parseAssoc tokens) とすれば元の題意にはあうだろうが。
395 名前:デフォルトの名無しさん mailto:sage [02/08/20 14:00] >>389 題名的には上下逆だろ。
396 名前:日曜Haskellerオヤジ [02/08/20 15:52] 関数型言語の素人のコードなので変かも知れませんが大体こんな感じになります。 本できたら、このスレッドに報告してくださいね、買います。 type Token = String type Key = String type Field = String type Value = String hoge_key = [ "Name" , "Title" , "Address" ] hoge_token = [ "Name" , ":" , "Yamada" , "Taroh" , ";" , "Title" , ":" , "Mr" , ";" , "Address" , ":" , "Tokyo" , "Shinjuku" , ";" ] -- ここが本体 func :: [Key] -> [Token] -> [(Field, Value)] func k t = receive [] t where receive xcomplete remain | remain == [] = xcomplete -- 全部完了 | nokey = receive xcomplete raw_recs -- キー無し | otherwise = receive (rec:xcomplete) raw_recs -- 成功 where -- 先頭レコードのその以外のレコードの定義 ( raw_rec , raw_recs ) = sprit_records remain -- キーと ':' と結合前の値のリスト定義 -- 必要ならコロンのチェックをすること ( key : ( colon : value_token ) ) = raw_rec -- キーがあるかどうかの定義 nokey = (has_member k key) == False -- 値の定義 value = cat_value value_token -- 整形済みレコード rec = ( key , value )
397 名前:日曜Haskellerオヤジ [02/08/20 15:53] 続きです -- トークン分解と ';' の取り除き -- 末尾 ';' チェックはしていないので必要なら無限再帰防止策をとること sprit_records :: [Token] -> ( [Token] , [Token] ) sprit_records token = receive ( [] , token ) where receive ( x , (y:ys) ) | y == ";" = ( x , ys ) | otherwise = receive ( x ++ [y] , ys ) -- 空白を入れながら文字列の結合をする cat_value (x:xs) = receive x xs where receive complete remain | remain == [] = complete | otherwise = receive ( complete ++ " " ++ x ) xs where (x:xs) = remain -- キー名があるかどうかチェック has_member (key:keys) x | x == key = True | keys /= [] = has_member keys x | otherwise = False
398 名前:383 [02/08/20 20:19] 日曜Haskellerオヤジさん ありがとうございます。 なんか、本を出すことで盛り上がってるみたいなのですが。。 すみません、>389 は私ではないです。誰かがネタでやったみたいです。 なのに、期待して答えて頂いて感謝してます。 それと、すぐ宿題ってばれましたね(苦笑)。事実、海外でITを勉強してる学生です。 これはアサイメントで来週提出で7問中、1問だけとけてる状態です。そして、苦肉の策で このスレに質問をしてみました。そして、みなさんにヒントを頂き感謝してます。 みなさんはかなりの知識をお持ちのようで、私なんてJAVAの教科は自分では得意だと 思ってやってましたが、haskelになると途端にややこしくなり、自分の頭の悪さを、思い知らされてます。 数学の知識がさらに必要となってきてますね。 日曜Haskellerオヤジ さん、参考になりました。ありがとうございます。 ついでにこのアサイメントの全容を貼っときました。(期待しつつ)。自分でやるつもりです。 海外は教科をパスするのがきついですね。 www7.big.or.jp/~mb2/bbs/up/img-box/img20020820192929.zip また、質問があればさせていただいていいですか? お礼のレス遅れてしまってすみません。なんか、私の使ってるプロバ、規制されてるんです。うー だから、友人にメールで送って、それからレスしてもらってるので。すみません。荒らしではないですよ。
399 名前:デフォルトの名無しさん mailto:sage [02/08/20 20:25] 日曜オヤジさん、カコ(・∀・)イイ!!
400 名前:デフォルトの名無しさん [02/08/21 09:00] >>383 hogehoge ks ts = filter (\ (k,v) -> elem k ks) $ map hogera $ hoge ts where hoge [] = [] hoge ts = case break (";" ==) ts of (_,[]) -> [ts] (xs,_:ys) -> xs : hoge ys hogera ls = case break (":" ==) ls of (_,[]) -> (unwords ls, "") (x,_:y) -> (unwords x, unwords y)
401 名前:デフォルトの名無しさん [02/08/21 09:02] uge
402 名前:日曜Haskellerオヤジ [02/08/21 22:12] >すみません、>389 は私ではないです。誰かがネタでやったみたいです。 やっぱりそうか(笑) 関数型は脳の回路がスイッチしないとやっぱり大変です、 普段の仕事では普通の言語を使っているので、土日に関数型に切り替えると毎週のように戸惑います。 JAVA 等で使われているオブジェクト指向的な考え方が頭の中に残っているとうまく組めません。 関数型プログラムのコツは写像を追うことと、 自分が欲しい結果を細部に分解しながら欲しいものを定義してゆくことだと思います。 しかし、これは考えても無駄で、なれるしかないです >また、質問があればさせていただいていいですか? どうぞ、このスレッドは最近ずっと寂れていたようですし、私が答えなくても だれかが答えてくれると思いますし、私も書いてみます。 #ダウンロードしようと思いましたが、ファイルはもうアップローダーに残っていないみたいです。
403 名前:デフォルトの名無しさん mailto:sage [02/08/22 03:18] まずfという関数があり、それはトークンの列を受け取って題意の処理を行うと仮定します。 1. 次の関数 g v [v1, ..., vn,":"]++xs=(v++" "++v1++" "++...++" "++vn,f xs) を作りましょう。 2. gを使って関数fを定義します。関数fは、もしnがリストkに現れていたら f [n,";",v1, ..., vn,":"]++xs = (n,v1++" "++...++" "++vn):f xs そうじゃなかったらf xsを返します。fの定義はkのスコープの中で行われるものとします。 3. 最後に二つの関数をまとめてansを作りましょう。ansはキーのリストとトークンのリストをとり、 f,gを内部で定義してfにトークンのリストを渡します。 宿題の答えを書くのもアレなので、こういうかたちにしてみました。
404 名前:デフォルトの名無しさん mailto:sage [02/08/22 03:23] >>403 > 2. gを使って関数fを定義します。関数fは、もしnがリストkに現れていたら 2. gを使って関数fを定義します。関数fは、もしnがキーのリストkに現れていたら でした。舌足らずですた。
405 名前:デフォルトの名無しさん mailto:sage [02/08/26 10:16] 東大の「こ・何とか」って人は何人?
406 名前:デフォルトの名無しさん mailto:sage [02/08/29 13:10] nisseicom.co.jp
407 名前:日曜Haskellerオヤジ mailto:sage [02/08/30 00:01] >>403 ん、お盆休み明けてのぞいてみれば、だれもレスを付けていないのか・・・ 今週末ちょっと考えて見ます。
408 名前:日曜Haskellerオヤジ [02/08/31 17:37] やっと週末、必死こいて圏論勉強中の日曜Haskellerオヤジです。 ちょっと読んでみたんですが、正直題意が良くわからなかったです。 これはレスつけられないのでは、と思いました。 出題は、宿題のパターンでよいとは思います。ただし、宿題は自分の良心で自分でやりましょうね。(笑 ちなみに、引数に使ったラベルに意味説明を入れたほうが良いと思います。 いきなり v とか v1 とかで説明されてもわかりにくいです。 v1 v2 ... は入力トークンで、末尾は ":" です、 そのリストを [v1 , ... vn , ":" ] とします。 みたいな感じで書いた方がよいのではないかと感じました。 v はキー・・・・なんでしょうか? あと、2については、 f の中に g が見当たりません。 ( v ++ " "++v1++" "++...++" "++vn,f xs) = (n,v1++" "++...++" "++vn) なんでしょうか?
409 名前:デフォルトの名無しさん [02/08/31 17:43] 正直ハスケルってどこで使うの?別に煽りじゃなくて、 どういうところで使われてるか不思議で。shcemeとかは dr schemeのチュートリアルで結構仕事があるみたいなことを 書いてあったけど。
410 名前:デフォルトの名無しさん mailto:sage [02/09/05 10:28] >>409 学校
411 名前:デフォルトの名無しさん mailto:sage [02/09/07 12:25] >>410 (小)
412 名前:デフォルトの名無しさん mailto:sage [02/09/07 12:25] >>400 kakoii! tuka hutuu dakedo, >>396-397 no ato ni miruto kakoii!
413 名前:デフォルトの名無しさん [02/09/07 12:42] www.sampou.org/nobsun/journal/?0320 そこでいう setter って x {foo = "chample"} みたいなのじゃないんすか? data Foo = Coo { foo :: String, bar :: Integer} deriving Show x = Coo { foo = "sample", bar = 12345 } -- 初期化 main = print x >> print (x {foo = "chample"}) と、こんなところで半年近くも前の話に質問をしてみるテスト。
414 名前:デフォルトの名無しさん [02/09/07 13:11] >>413 君はこういう (www.bier-reise.com/cooking/recipe/go-ya/chample.htm ) つもりなのかもしれんが、"チャンプル" でなく "チャンプルー" と伸ばすこともあり、 chample よりは champloo って書くべきものなのだよ。
415 名前:デフォルトの名無しさん mailto:sage [02/09/07 15:41] >>352 なんだそれは。
416 名前:デフォルトの名無しさん [02/09/07 23:10] ここらへんで一丁Haskellで 七行プログラミング part2 pc3.2ch.net/test/read.cgi/tech/1018840143/ に乱入して、関数型言語の恐ろしさを見せつけてやりませんか? Haskellなら相当な事が出来そうですが(今↑ではやりのRLEとかも)
417 名前:デフォルトの名無しさん mailto:sage [02/09/07 23:28] おまえがやって見ろよ
418 名前:デフォルトの名無しさん mailto:sage [02/09/08 02:11] >>416 大して戦果をあげれないと思う。入出力とか弱いし。 Haskell 向きなのを何か考えればアレかもしれんが。
419 名前:デフォルトの名無しさん mailto:sage [02/09/09 13:38] モナドパーサ
420 名前: [02/09/18 03:35]
421 名前:デフォルトの名無しさん mailto:sage [02/09/18 06:54] 7行プログラミングってPerlが一番凄そう。
422 名前:デフォルトの名無しさん mailto:sage [02/09/18 16:41] むしろperlはそのための言語。
423 名前:司馬乱 [02/09/27 23:46] >>408 久しぶりにこのスレ覗いてみたら寂れてますねー. コンピュータサイエンス向けの日本語の易しい圏論の本って需要あるのかな?
424 名前:日曜Haskellerオヤジ [02/09/30 14:31] そーですねー、淋しいです。 >コンピュータサイエンス向けの日本語の易しい圏論の本って需要あるのかな? 取り合えず私にはあります、だれか作ってー 離散数学に興味を持ったところ、そのまま勢いでこれも面白くなってきています。 もっとも、一般位相はしらないわ、集合論はしらないわで大変ですが・・・ Haskell という言語はこういうものを勉強するときに便利ですね。
425 名前:デフォルトの名無しさん mailto:sage [02/09/30 16:02] www.mail-archive.com/haskell@sampou.quickml.com/index.html
426 名前:石敢當 [02/09/30 22:16] >>423 なぜコンピュータサイエンスに圏論なのか、圏論を勉強すると プログラムを作成するにあたりどんな嬉しいことがあるのか、 などについて序章あたりに書かれているような本だったら買いたいです。 英語で書かれたのを1冊持っていますが、なかなか読み進めません。 ありがたみを実感できる章にたどり着けばはずみがつくと思うのですが・・。
427 名前:デフォルトの名無しさん [02/09/30 22:58] >>426 その本とはなんでしょう? さしつかえなければ教えてください。
428 名前:デフォルトの名無しさん [02/09/30 23:17] 圏論ですか、下の本で見たときがあります。 情報数学講座7 プログラム意味論 横内寛文 共立出版 1994.6 それにしてもプログラミング処理系は、実用的にするため色々な拡張が施され ています。そのため純粋な数学との間には大きな溝が出来てしまってい るような気がします。
429 名前:デフォルトの名無しさん mailto:sage [02/10/01 00:43] これが圏論だっていうコードを見れば 分かるようになるかも。
430 名前:デフォルトの名無しさん mailto:sage [02/10/01 23:00] Frege構造って何?
431 名前:石敢當 [02/10/02 01:07] >>427 Bird & de Moor の "Algebra of Programming" です。
432 名前:司馬乱 [02/10/02 01:08] コンピュータサイエンスの場合,圏論の代数的な面を強く出すよりは 論理や型理論と一緒にやる方がいいと思いますが(代数は等式論理なので) どうやって動機付けするのがいいのかな. 圏論には多分 - プログラムの意味論を厳密に議論するための言葉を提供してくれる - 様々なプログラミングのメタファーを提供してくれる という二つの面があると思いますが,お互いに依存しあっているので 最後まで引っ張っていく書き方というのは結構challengingかも. きちんと書くと今度は厚くなりそうだし.
433 名前:司馬乱 [02/10/02 01:27] >>431 たしかallegoryとか使っているやつですか?
434 名前:石敢當 [02/10/02 22:07] >>433 はい、そうです。 >>きちんと書くと今度は厚くなりそうだし. 執筆する側としては厚い本を書くのは大変だと思いますが、 読む側としては多少厚くても難解な薄い本よりはずっと ありがたいです。もっとも、431の本をなかなか読み進めない 一番の理由は十分な間を取れていないからで、難解とか言う 以前の問題です。
435 名前:デフォルトの名無しさん [02/10/02 22:17] >>432 というような会話を、約10年程前にしてたんですけど、 相変わらずそのスジでは必須科目(wなのですか?
436 名前:デフォルトの名無しさん [02/10/02 22:34] 多分、答えないと思うけど(w
437 名前:日曜Haskellerオヤジ [02/10/04 00:02] >>429 圏論というのは、集合論の代わりになるもので、集合論が「要素」の論理 であるのに対して、圏論は「要素」と「要素」の間の関係の論理です。 集合論を置き換える為の物のようです。( 多分(^^; ) 圏論って定義は分るんですけれど、その意味しているところは難解です、いまだに分りません。 しかも定義も注意深く定義を読まないと、いきなり変なところにはまり込んでしまいます。 私は ob(C) が「点」とか書かれていて最初こんがらがっていました。 ついでに射も最初はこんがらがってました。 #といいますか、全部だ・・・ もし分らないのが圏論の定義なら しょうもない集合でいいので一個具体的に作ってみると少しづつ分ってきます。 たとえば { {false,true} , {0,1} } = ob(C) から出発して 全部作ってみるといいですよ。 #ちかごの感じるんですが # 圏論 : 関数型 # 集合 : オブジェクト指向 #「点」が中心の時がよいのか「射」が中心の時がよいのか #時々強烈に的確に記述できる関数型の特徴の正体が見えたような見えないような・・・
438 名前:デフォルトの名無しさん [02/10/04 02:09] わたしの、数学から見たイメージでは、 集合論:構成的(実装を扱う) 圏論:公理的(インターフェースを扱う) 射の位相空間での実装は連続写像、群での実装は準同型写像って感じ。 インターフェースのみを使って記述すれば、そのインターフェースを 持っているどんな実装でも成り立つものを作ることができる。 また、インターフェースを前に出すことで、性質を明確に記述でき、 性質の比較ができる。 などのことが、圏論のメリットと感じます。 コンピュータサイエンスで圏論がどう使われているのかは知りませんが。 いや、数学でもあまり知らないんだけど。
439 名前:デフォルトの名無しさん [02/10/09 23:28] >>423 >>432 もしかして書く気ですか?
440 名前:デフォルトの名無しさん [02/10/14 04:00] Hugsって、そろそろバージョンアップしたりしないのかな。 テンキーの'/'が効かないのはなぜ?
441 名前:日曜Haskellerオヤジ [02/10/15 22:08] 越田一郎先生のページが復活していたので記念上げしておきます。 チュートリアルとしては最適と思います、私もこれを使っておぽえました。 www.teu.ac.jp/kougi/koshida/Prog6/index.html
442 名前:デフォルトの名無しさん [02/10/28 04:33] 寝られないので今さっき勉強始めてみました、あげ
443 名前:デフォルトの名無しさん [02/10/28 05:04] Haskell ? なにそれ?
444 名前:デフォルトの名無しさん mailto:sage [02/10/28 05:09] >>443 若者向けのLisp
445 名前:デフォルトの名無しさん [02/10/28 05:18] >>444 若者向けのLisp
446 名前:デフォルトの名無しさん [02/10/28 09:38] prologの方がいいよ
447 名前:デフォルトの名無しさん mailto:sage [02/10/28 09:47] んなわきゃねぇ(w
448 名前:442 mailto:sage [02/10/28 10:08] 越田先生のチュートリアルいいよ。 公式のドキュメント読んでもいまいちだったけど、 これ読んだらけっこうすんなり入ってきました。 東京工科の学生には負けられません。
449 名前:デフォルトの名無しさん mailto:sage [02/10/28 10:56] `ってどこ?っていうのがFAQかよ(藁
450 名前:デフォルトの名無しさん mailto:sage [02/10/28 11:29] pの横にあるキーボードもありますけどね。
451 名前:デフォルトの名無しさん mailto:sage [02/10/28 11:41] キーマップが違っててもすぐ分かるだろ
452 名前:デフォルトの名無しさん mailto:sage [02/10/28 12:15] わからんキーはかたっぱしから押してみるのが近道だろうが 最近はヘタなキー押すとサスペンドしたりユーザー切り替わったりするらすいな。 なんでこれ以上ボタン増やしたがるのかわからんよ。
453 名前:442 mailto:sage [02/10/28 12:20] あのー、スレ違いなんですけど。。。
454 名前:名無しさん@Emacs [02/10/29 18:38] 越田先生の fibStep :: (Integer, Integer) -> (Integer, Integer) fibStep (u, v) = (v, u+v) fibPair :: Int -> (Integer, Integer) fibPair n | n == 0 = (0, 1) | otherwise = fibStep (fibPair (n-1)) nacchi :: Integer -> Integer nacchi = fst . fibPair このnacchi関数サイコー! ところでIntegerは最高何桁まで扱えるんでしょうか? nacchi 10000 ぐらいまでは余裕みたいですが。
455 名前:デフォルトの名無しさん mailto:sage [02/10/29 18:45] (● (略
456 名前:名無しさん@Emacs [02/10/29 20:17] 越田先生の10/9の再帰的関数と組の問題を解いたのだけど、 かなり汚いです。だれかスッキリした正解を教えて下さい。 maxOccursTwo :: Int -> Int -> (Int, Int) maxOccursTwo a b | a > b = (a, 1) | a == b = (a, 2) | otherwise = (b, 1) maxThreeAux :: Int -> (Int, Int) -> (Int, Int) maxThreeAux a (b, c) | a == b = (a, c + 1) | a > b = (a, 1) | a < b = (b, c) maxOccursThree :: Int -> Int -> Int -> (Int, Int) maxOccursThree a b c = maxThreeAux a (maxOccursTwo b c)
457 名前:名無しさん@Emacs [02/10/29 21:25] 越田先生の10/16の「リスト」の問題なんですが、 innerfunc :: Int -> Int -> [Int] innerfunc num op | op == 0 = [] | num `mod` op == 0 = innerfunc num (op-1) ++ [op] | otherwise = innerfunc num (op-1) divisors :: Int -> [Int] divisors num | num <= 0 = [] | otherwise = innerfunc num num これでリストに要素を追加しようと思い":"を使おうと 思ったのですが、これの型はa -> [a] ->[a] なので使うことができません。 [a] -> a ->[a]という型の関数はないんでしょうか? [op]っていう書き方がなんとなくダサい気がします。 そういう関数は組込みであるんでしょうか? というか組込み関数一覧みたいなのってどっかにありません?
458 名前:名無しさん@Emacs mailto:sage [02/10/29 21:47] divisors関数を使った素数判定はこうかな? isPrime :: Int -> Bool isPrime num | num <= 2 = False | length (divisors num) > 2 = False | otherwise = True なんとなくHaskellが楽しくなってきました。 東京工科大のやつらがうらやましひです。。。 早くIO使った実用的アプリを作れるところまでいきたいのぉ
459 名前:名無しさん@Emacs [02/10/29 22:27] 型変換するよい方法はないでしょうか? hugs上で >:type "abc" "abc" :: String >:type ["abc"] ["abc"] :: [[Char]] となってしまいます。本当は[String]となって欲しいわけですが、 Charのリストのリストになってしまうんですね。 どうしてなんでしょう? そこで、 >:type ["abc"::String]とかやってみてもダメですね。[[Char]]になります。 :type 1::Intならうまくいくんですが。。。
460 名前:デフォルトの名無しさん mailto:sage [02/10/29 22:47] String は [Char] の別名だから。 www.haskell.org/onlinereport/basic.html#characters ↑を見てみればわかるように言語仕様で type String = [Char] というセマンティクスが規定されてる.
461 名前:名無しさん@Emacs [02/10/30 00:05] >>761 ありがとうございます。 CharとStringの扱いですが、なかなか難しいですね。 おなじくhugs上で >("aaa","b") == ("aaa", 'b') というのはもちろんエラーになるわけですが、 Stringとなって欲しいようなところで[Char]と評価されて しまうので。。。 チュートリアルの図書館データベースの問題で、 type Person = String type Book = String type Record = (Person, Book) -- 図書の返却を行う関数 isData :: Record -> Record -> Bool isData record1 record2 = record1 /= record2 returnLoan :: Database -> Person -> Book -> Database returnLoan remove_person remove_book = [ record | record <- exampleBase, isData record (remove_person, remove_book)] これだと ERROR "library.hs":54 - Type error in application *** Expression : isData record (remove_person,remove_book) *** Term : (remove_person,remove_book) *** Type : ([([Char],[Char])],[Char]) *** Does not match : ([Char],[Char]) というエラーが出ます。んー、わからんです。
462 名前:名無しさん@Emacs mailto:sage [02/10/30 00:06] s/761/460/ でした。すんません。
463 名前:名無しさん@Emacs mailto:sage [02/10/30 00:10] ×returnLoan remove_person remove_book ○returnLoan exampleBase remove_person remove_book でした。質問忘れてください。m( )m
464 名前:名無しさん@Emacs mailto:sage [02/10/30 01:06] それでもあれですね。思ったより簡単ですね。 もっとCやPerlと比べて難しいかと思っていたら そうでもなかった。二日である程度慣れました。 ループを一切使わずに全て再帰で書くのは なれないうちはしんどそうだけど、見返りとして バグの出にくいプログラムになるのかな。 これがすらすら書けるようになったら この言語で仕事してみたいですね。 手っ取り早くHaskellを活用できる分野というと XMLの処理系でしょうか。 Haskellについてはまだよくは分っていませんが(藁) 他の言語より向いている気がするんですね。 もっとフォーマルなプログラムにおいてこそ こういった言語は意味をなすのかもしれないけど、 多分そういうのはヘタレには無理だろうし(w とりあえず、IO、スレッドが使えるまで基礎勉強ですね。 無料で使わせてもらっていて、講義より先に 問題に関する質問をここに書いてしまっては 先生に申し訳ないのでここらへんでやめにしておきます。 先生には入門者用の本を書いてほしいなあ。
465 名前:デフォルトの名無しさん mailto:sage [02/10/30 01:31] >>464 IBMのdeveloperWorksサイトに、HaskellでXMLを云々って記事が有ったね。 既出だろうけど。
466 名前:名無しさん@Emacs mailto:sage [02/10/30 01:47] >>465 なるほど、それでかな。 Haskellを使ってみる前からXMLの処理には 関数型言語が向いている気がしてたんです。 ただ単に自分が以前DWを読んだだけだったのですね(汗 関数型言語初体験の感想としてなんですが、 JavaやC++ではいかようにも書けてしまうのが むしろあまりよくないことに思えてきました。 アルゴリズムを素直に表現してそれがそのまま プログラムになっているという。素晴らしいです。 久しぶりに萌え萌えです。 もっと綺麗に書けるよう努力せないかんですね。
467 名前:名無しさん@Emacs mailto:sage [02/10/30 07:49] 朝起きてから、Haskellスレパート1を見てたのですが、 2chに神が君臨したかのようなレベルですね(汗 自分の書き込みが恥かしくなって来たのでしばらく潜伏します。 早くみなさんのレベルに追いつきたひ。。。 これだけじゃ情報価値なしなのでせめてリンク 純粋遅延関数型言語 Concurrent Clean sky.zero.ad.jp/~zaa54437/programming/clean/ このサイトの書評は私のような初心者には参考になりそうです。 また管理者の人はCleanシステムのドキュメントの翻訳を精力的に 行われています。素晴らしいです。
468 名前:デフォルトの名無しさん [02/10/31 21:02] 英語サイトで東工大くらいの難易度のチュートリアルってあります?
469 名前:デフォルトの名無しさん [02/10/31 21:19] ゲージンはいきなりGentle〜を読んでコード書き出すの? なんか信じられないんだけど、あれより簡単なドキュメントって 英語じゃみたことないよ。
470 名前:468 mailto:sage [02/10/31 21:31] >>469 情報どうもです。 テーマごとに手ごろな課題がついてて段階的に ステップアップできるようなのがいいんですが。 もうちょっと探してみます。
471 名前:デフォルトの名無しさん [02/11/02 09:19] これってまじですか? research.microsoft.com/Users/simonpj/papers/meta-haskell/ というかAlexandrescuに触発されたとか。。
472 名前:デフォルトの名無しさん [02/11/02 11:51] >>464 関数型言語でXMLを扱う例としてこんなのがあります。 xduce.sourceforge.net/ メインの開発者は日本人です。 実装はHaskellじゃなくてMLだけど。
473 名前:デフォルトの名無しさん [02/11/02 15:15] Haskell.NETはどうなりますたか?
474 名前:デフォルトの名無しさん [02/11/03 11:45] classって使ってます? ghcのソースコード見ても殆ど使ってないんだけど、、、 C++がめんどくさくなるとという理由から敬遠されるのと 同じような理由で型クラスも使われてないとか?
475 名前:460 mailto:sage [02/11/04 11:04] ttp://www.haskell.org/onlinereport/basic.html#sect6.3 (6.3 Standard Haskell Classes)の図にある如く 言語仕様で定義されてる基本型からして使いまくりですが? >>474
476 名前:デフォルトの名無しさん mailto:age [02/11/07 21:28] >>471 う
477 名前:デフォルトの名無しさん [02/11/07 21:57] I/Oとかの副作用処理って、モナドがファイナルアンサーですか? 他に良い方法無いの?(Haskell固有の話じゃなくて)
478 名前:デフォルトの名無しさん mailto:sage [02/11/07 23:30] 自分で考えろ
479 名前:名無しさん@Meadow mailto:sage [02/11/07 23:44] pc3.2ch.net/test/read.cgi/tech/1007387924/717
480 名前:デフォルトの名無しさん [02/11/10 23:22] ユニークな型ねー。 これだけで解決? >>478 あなたも一緒に考えましょうよ。
481 名前:デフォルトの名無しさん mailto:sage [02/11/10 23:43] 他にもあるよ。 ・lazyなストリームとみなす。 ・continuationを使う。
482 名前:デフォルトの名無しさん [02/11/11 01:28] そもそもLazyなのがいけないんだろ
483 名前:デフォルトの名無しさん mailto:sage [02/11/11 16:00] このスレ相変わらずプログラムコード量が著しく少ないねぇ
484 名前:480 [02/11/12 03:32] >>481 その2つの方法もありますね。 でも古典的(あまり普及できない)方法なのでは?
485 名前:名無しさん@Meadow mailto:sage [02/11/12 12:55] >>482 > そもそもLazyなのがいけないんだろ ‥‥‥誰もつっこまないのか。 っつうかオレ釣られた?
486 名前:デフォルトの名無しさん mailto:sage [02/11/13 15:44] 面倒なんで突っ込む必要なし
487 名前: ◆y3A2MadQ16 mailto:sage [02/11/14 05:57] 苦労の割にありがたみが少ないということかもね…。 嫌いじゃないんだけど、導入の旨みが苦労に勝っていると証明できないんで、 最近はLazyにも個人的に放置気味…。>Lazy Evaluation 代わりにという訳でもないが最近は部分評価野郎になってまつ。 (その上、HaskellどころかJava野郎に成り下がってまつ(w。)
488 名前:デフォルトの名無しさん [02/11/17 23:10] ガイシュツな話題。 Lazyが悪い訳じゃないのに・・・・ >>477 他にも色々なアンサーがありますよ。時制理論とね。 透明参照性を保つためには、時間とか状況とかを導入すれば良い。
489 名前:デフォルトの名無しさん mailto:sage [02/11/18 10:18] 効率性の問題に行き当たる
490 名前:デフォルトの名無しさん mailto:sage [02/11/19 11:00] >>488 もちろん悪くはないんだ。漏れも個人的には好きだ。 ただ好みの問題を越えて、 実装の苦労と実行効率を補ってなお十分にいいと言い得るかが問題…。
491 名前:デフォルトの名無しさん mailto:sage [02/11/19 23:09] >>489 >>490 実行速度も、もちろん気になるので言語に新しい要素を導入するときは 慎重にするべきですね。 でも構文で制限かければ良いような もしくは処理系のanalysisによる最適化(正格性判断による末尾再帰とかね) とかで何とかなりそうな気もします。 だれか何とかして。
492 名前:デフォルトの名無しさん [02/11/20 16:59] Hugs98 November 2002 release haskell.org/hugs/
493 名前:デフォルトの名無しさん mailto:sage [02/11/20 17:04] November 2002 release (November 19, 2002) We are pleased to announce a new major release of Hugs98. The most important features of this release are: ・ Much improved FFI support (contributed by Alastair Reid), bringing Hugs really very close to the Haskell FFI specification. ・ Adoption of a significant subset of GHC's hierarchical libraries (contributed by Ross Paterson). ・ An (allegedly) complete implementation of the Haskell98 module system (Sigbjorn Finne). Most reported bugs have also been fixed; however, some issues still remain. See Hugs Bugs & Features for further information.
494 名前:デフォルトの名無しさん mailto:sage [02/11/20 18:40] 随分とでかくなったな・・・
495 名前:デフォルトの名無しさん mailto:sage [02/11/21 15:25] >>440 バージョンアップしてもテンキーの"/"は効かないままな模様(Winhugs on W2k) つーか日本語キーボードじゃないと再現しなくて 開発元は気づいてないなんてオチじゃないだろうな。 英語キーボード持ちの人だれか試してプリーズ。
496 名前:デフォルトの名無しさん mailto:sage [02/11/22 01:10] >>495 漏れは英語キーボードだが。 日本語OSでしか再現しないのか?
497 名前:495 mailto:sage [02/11/22 21:57] >>496 英語KBでも効かないか。 ウチにゃ日本語W2kしかないから、英語OSの検証は無理だし。 もうちっと色々してみてダメだったらバグレポするつもり。
498 名前:デフォルトの名無しさん mailto:sage [02/11/26 09:05] 新しいHugs、なんかインストーラがおかしくない? アクセス権の設定とか。
499 名前:デフォルトの名無しさん [02/12/02 00:14] 誰か、 lispとhaskellとocamlの メリットデメリットを教えてください。
500 名前:デフォルトの名無しさん mailto:sage [02/12/02 00:31] 500get
501 名前:デフォルトの名無しさん mailto:sage [02/12/02 00:41] 501got!
502 名前:デフォルトの名無しさん mailto:sage [02/12/02 04:55] 新しいhugsにはwinhugsはついてないの?
503 名前:デフォルトの名無しさん mailto:sage [02/12/02 20:57] 越田先生の「値しての関数」と「オーバーロードとクラス」の問題が 全然分からない・・・。 誰かお助けを〜
504 名前:デフォルトの名無しさん mailto:sage [02/12/04 11:46] (´-`).。oO(tab-width 4文字にしててはまった。あー悩んだ悩んだ。do で。)
505 名前:デフォルトの名無しさん [02/12/05 00:49] GHC 5.04.2 Released www.haskell.org/ghc/
506 名前:デフォルトの名無しさん mailto:sage [02/12/05 01:40] HaskellはMS Research所属の人間が関わっているのに、 UNIX指向なんでつか?
507 名前:デフォルトの名無しさん mailto:sage [02/12/05 02:41] さあ
508 名前:506 mailto:sage [02/12/05 10:28] 「GHCは」、だった。
509 名前:デフォルトの名無しさん mailto:sage [02/12/06 09:11] ネタ? もともとグラスゴ大のプロジェクトで, 大学の研究者を MSR が引っこ抜いてきて, 継続してる研究だからってかんじか. ってゆ〜か MSR ってマジで全く何の要求も されない,ってウワサっすけど,本当? 個人的に一番参照してるサイモン博士の頁は↓だったりするが. ttp://research.microsoft.com/~simonpj/win32-cheat.html
510 名前:デフォルトの名無しさん mailto:sage [02/12/06 14:02] いや、GHCの最新版で一番最初に出るのがUNIX版なもんで
511 名前:デフォルトの名無しさん mailto:sage [02/12/07 10:04] え,ソースは CVS でいつでも最新だよ? とかボケてみる(w ttp://www*haskell.org/ghc/docs/latest/html/building/winbuild.html 彼らが常用してる開発環境が↑の Windows ビルド用環境ではない, というだけかな,と.
512 名前:デフォルトの名無しさん [02/12/11 20:50] >502 >新しいhugsにはwinhugsはついてないの? オレも見つけられない。どこにあるの?
513 名前:デフォルトの名無しさん [02/12/14 15:59] www.haskell.org/~petersen/haskell/lc2001.html >Emacs in Haskell の計画 これはネタですか?こんなことやってる人いるのかな?
514 名前:デフォルトの名無しさん [02/12/16 06:01] www.haskell.org/humor/ ↑これのどこが面白いのか、誰かひとつ解説してくれ。
515 名前:デフォルトの名無しさん mailto:sage [02/12/20 16:48] その面白さを理解できないあなたはHaskellerではなし。 無理にでも笑いなさい。
516 名前:デフォルトの名無しさん [02/12/22 11:30] yzg.3nopage.com/haskell.jpg 質問なんですが、これってなんていう本だか分かりますか? おそらく、Haskell:the Craft of Functional Programmingの和訳だと思われるのですが…… 検索しても出てこないもので……
517 名前:デフォルトの名無しさん mailto:sage [02/12/24 10:15] >>516 何処ぞの大学か何かの授業用のテキストじゃないかなぁ. 前の年には毎回配ってたプリントを,次の年は一括して印刷・ 簡易製本とかいうパターンって結構あるから
518 名前:デフォルトの名無しさん [03/01/06 23:34] んが
519 名前:IP記録実験 mailto:IP記録実験 [03/01/08 21:43] IP記録実験 qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:??? そんなわけで、qbサーバでIPの記録実験をはじめましたー。 27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc SETTING.TXT管轄でないということは全鯖導入を視野に、か? 38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l >>27 鋭いです。 73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l >ところで、IPが抜かれて何か今までと変わることってあるのでしょうか? ・今までより、サーバが重くなる。 ・裁判所や警察からの照会があった場合にはIPを提出することがある。
520 名前:デフォルトの名無しさん mailto:sage [03/01/09 02:32] IP記録するのはいいけど串も規制しないと意味ないよな
521 名前:デフォルトの名無しさん mailto:sage [03/01/09 03:16] フシアナ標準にすればいいのに。 困るのは厨くらいだろ?
522 名前:デフォルトの名無しさん mailto:sage [03/01/09 03:58] >>292 どのIPがどの垢かは、ISPが記録してます。 だから、悪い事すればモデムだろとADSLだろうと捕まりますよ。
523 名前:ぶん [03/01/09 14:08] 始めまして。今私はplorogの勉強をしています。問題集に並べ替えのプログラムがあったのですが、よくわからないのでどなたか教えて下さい。 concatenate([],List,List). concatenate([Head | This Tail],List,[Head | That Tail]):- concatenate(This Tail,List,That Tail). sort([],[]). sort([Head|[]],[Head]). sort([Head|[THead|[]]],Result):- Head <= THead, concatenate([Head],[THead],Result). sort([Head|[THead|[]]],Result):- Head > THead, concatenate([THead],[Head],Result). sort([First|[second|Tail]],Result):- First <= Second, concatenate([Second],Tail,Temp), [First|RTail]=Result, sort(Temp,RTail). sort([First|[second|Tail]],Result):- First>second, concatenate([First],Tail,Temp), [Second|RTail]=Result, sort(Temp,RTail). それで、これをどう繰り返せばいいのかがわからないのです。何かわかる人がいたら教えて下さい。
524 名前:デフォルトの名無しさん mailto:sage [03/01/09 14:21] これからは馬鹿って書いただけで訴えられる可能性がでてきたわけで
525 名前:デフォルトの名無しさん mailto:sage [03/01/09 15:05] 既に訴えられているわけだが。ひろゆきが責任を取ってるだけで。
526 名前:デフォルトの名無しさん mailto:sage [03/01/09 17:49] ======2==C==H====================================================== 2ちゃんねるのお勧めな話題と ネットでの面白い出来事を配送したいと思ってます。。。 ===============================読者数: 138720人 発行日:2003/1/9 年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。 そんなわけで、年末に予告したIP記録ですが実験を開始しています。 「2ちゃんねる20030107」 こんな感じで各掲示板の最下部に日付が入ってるんですが、 20030107以降になってるところはログ記録実験中ですー。 んじゃ! ────────────────────────Age2ch─ ■この書き込みは、Age2chを使って配信されています。 ──────────────────────────── Keep your thread alive ! pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
527 名前:デフォルトの名無しさん mailto:sage [03/01/09 23:41] 2ch板一覧 www.skipup.com/~niwatori/keijiban.htm >728 ( ´∀`)σ)Д`) プニ
528 名前:デフォルトの名無しさん mailto:sage [03/01/10 08:39] そりゃ最初はよほどの大事でもない限りIPを渡すことはしないだろう、 でも物事はだんだんエスカレートしていく物、そのうち密告とかも「誹謗中傷」として IPを渡すようになる、、、
529 名前:デフォルトの名無しさん mailto:sage [03/01/10 10:39] 最近、腐れさん見ないね・・
530 名前:デフォルトの名無しさん mailto:sage [03/01/10 11:09] ★ ひろゆき重大な決意を語る。 live2.2ch.net/test/read.cgi/news/1041069586/l50
531 名前:デフォルトの名無しさん mailto:sage [03/01/10 11:55] 最高裁への上告は認められなくなったから、これで事実上判決確定だよ。 逆転も何もないって。 勢いで上告なんかしても一発で上告却下(門前払い)だよ。 二審も一審を支持。これに対して上告しようにも、 刑事訴訟と同様、自由に上告できるってもんでもないのです。 民事訴訟法312条 (上告の理由) 1項 「上告は、判決に憲法の解釈の誤りがあること その他憲法の違反があることを理由とするときに、することができる。」 www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。 これで完全終了ってことか。
532 名前:デフォルトの名無しさん mailto:sage [03/01/10 12:24] >>754 まともじゃない掲示板なんて存在意義ないね。 そういうことならここじゃ意味ないと思うが。
533 名前:デフォルトの名無しさん mailto:sage [03/01/10 13:16] スレタイの日本語、微妙におかしいね。
534 名前:デフォルトの名無しさん mailto:sage [03/01/10 15:37] (前略)815様 落ち着け。お前の感じている感情は精神的疾患の一種だ。 静める方法は俺が(中略) 鯖の前で両目をひんむいて「びっくりするほどユートピア」と唱えながらキュウリを(以下略
535 名前:デフォルトの名無しさん mailto:sage [03/01/10 17:05] なつかし。
536 名前:デフォルトの名無しさん mailto:sage [03/01/10 23:26] ひろゆき お前にはがっかりした。 2chにも。さいなら。
537 名前:デフォルトの名無しさん mailto:sage [03/01/10 23:34] 全部ミギーが書きましたって言えば問題ナッシング
538 名前:デフォルトの名無しさん mailto:sage [03/01/11 00:50] ううん、既存のTripodとかじゃなくて新たにそういうシステムを 作っちゃうの。 どう作るかはわかりませんw しかし嵐とか不愉快な対策には「こいつがむかつく」と ひとり1票で投票してきめます。 そしてその人はもうカキコ禁止。 どうやってカキコ禁止にするとかそういうのはわかりませんw
539 名前:デフォルトの名無しさん mailto:sage [03/01/11 00:57] 記録されてる分なにかと現社会より厳しくなった感じします、
540 名前:デフォルトの名無しさん mailto:sage [03/01/11 12:22] とりあえず、訴えられたらスレ住人全員で土下座しよう。 ていうか、それくらいの気概で書き込め。 今までひろゆきに丸投げしていた負担を、個人個人で背負えばイイだけの話だろ。 ここからが本当の市民運動のスタートだよ。
541 名前:デフォルトの名無しさん mailto:sage [03/01/11 13:21] >1 :ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ :03/01/08 17:13 ID:??? >そんなわけで、qbサーバでIPの記録実験をはじめましたー。 IP記録実験 qb.2ch.net/test/read.cgi/accuse/1042013605/l20 IP記録実験PART2 qb.2ch.net/test/read.cgi/accuse/1042020193/l20 これまでのあらすじは あたりに誰かお願い。
542 名前:デフォルトの名無しさん mailto:sage [03/01/11 13:47] マターリしてるのにスレ違いな質問はどーかと。 それに、会社立ち上げたんだし、たぶんにその辺からだろ〜ね。
543 名前:デフォルトの名無しさん mailto:sage [03/01/11 16:35] 2chをはけ口にしていた人はどこで憂さ晴らしをするのか少し興味ある
544 名前:デフォルトの名無しさん mailto:sage [03/01/11 16:42] 漏れはどこもさくさく行ける。 プロバ次第だと思われ。
545 名前:デフォルトの名無しさん mailto:sage [03/01/12 00:47] 漏らすバカが出るだろうというのが一番の問題なんだよ
546 名前:デフォルトの名無しさん mailto:sage [03/01/12 00:56] ごめん、なんで「それを言うなら」になるのかがわからん(^_^;) 後半の批判は批判でいいと思うんだけど、書き込む人間の自己責任ってのとどう関係してるの?
547 名前:デフォルトの名無しさん mailto:sage [03/01/12 11:06] だろ。 461みたいなことばっか起こるだろ。 ろくなことなないな。2ちゃんなんか。 それもやられ損かなぁ? 訴えてやればいいのに。
548 名前:デフォルトの名無しさん [03/01/12 15:22] >>1-517 荒らされる前までのリンク。 なんでプログラム技術板で私が覗いてる全スレでやられてるんだか・・・。
549 名前:デフォルトの名無しさん mailto:sage [03/01/12 20:37] 全ての責任は当事者同士で解決しろってこと 人が書き込んだものに対して賠償するのもアホらしいしな ごく当り前な考えだわな 騒ぐ程のもんでもない わかるか?
550 名前:デフォルトの名無しさん mailto:sage [03/01/12 20:41] プチ法廷ごっこでは、詭弁で開き直る2ちゃん擁護派は強い。 でもリアル法廷ではボロ負け。
551 名前:デフォルトの名無しさん mailto:sage [03/01/12 20:49] 過度の期待は禁物です。
552 名前:山崎渉 mailto:(^^)sage [03/01/13 18:34] (^^)
553 名前:デフォルトの名無しさん mailto:sage [03/01/13 22:25] そんなに世の中が嫌いか。 年収600万円に満たない屑でも愉快に暮らせる楽しい世の中じゃないか。 いちいち爆破するな。
554 名前:デフォルトの名無しさん mailto:sage [03/01/14 10:32] Functional Programming With Haskell www.amazon.com/exec/obidos/tg/detail/-/0077093305/ こんな本が出てました。誰か読んだ人はいますか? あと4月いは損氏の本。といっても仕様書そのままかもしれないけど Haskell 98 Language and Libraries : The Revised Report www.amazon.com/exec/obidos/tg/detail/-/0521826144/
555 名前:山崎渉 mailto:(^^)sage [03/01/15 17:56] (^^)
556 名前:デフォルトの名無しさん [03/01/17 00:03] 標準ライブラリ関数のクイックリファレンス本って無いのかな? 入門本は取り敢えず読んだから、 簡潔な説明と簡単な使用例が有ると嬉しいんだけど。 >>554 の本は、ちょっと違うみたいだし、 1969年にならないと手に入らないって書いてある……バグってるな。
557 名前:デフォルトの名無しさん mailto:sage [03/01/17 10:46] >>554 後者って www.haskell.org/definition/ ↑の最初にある Report ふたつの PS・PDF を 印刷製本したものではとか思われ
558 名前:デフォルトの名無しさん mailto:sage [03/01/17 14:39] research.microsoft.com/Users/simonpj/haskell98-revised/ これだろ
559 名前:山崎渉 mailto:(^^)sage [03/01/23 20:13] (^^)
560 名前:デフォルトの名無しさん mailto:sage [03/01/24 10:19] 圧縮ツール bzip2 の作者 Julian Seward さん、Haskellerになったんですね。 sources.redhat.com/bzip2/#about-author
561 名前:デフォルトの名無しさん mailto:sage [03/01/25 15:44] つってもなー、Haskellerにはlurkerが多いらしいからな
562 名前:デフォルトの名無しさん mailto:sage [03/01/26 15:59] www.haskell.org内にも Seward氏の名前はたくさん出てるから、lurkerではないのでは?
563 名前:デフォルトの名無しさん mailto:sage [03/01/26 20:59] 今日からHaskell使ってプログラミング始めます。 とりあえずHP作ってみた。 haskell.tripod.co.jp/index.html
564 名前:デフォルトの名無しさん mailto:sage [03/01/27 00:30] >>563 (・∀・)イイ! 応援しますよ
565 名前:デフォルトの名無しさん mailto:sage [03/01/27 15:15] >>563 もう解決したんだろうか。":?"
566 名前:デフォルトの名無しさん mailto:sage [03/01/27 16:57] >>564 心強いです。感謝。 >>565 解決しました。感謝感謝。
567 名前:デフォルトの名無しさん mailto:age [03/01/31 15:57] 荒すな
568 名前:デフォルトの名無しさん [03/02/03 22:53] WinHugsでテンキーの'/'が効かない件、 バグか仕様か知らないけど、取り敢えず直してみた。 Windowsでプログラム組んだ事無いんで、変な事してる かもしれないけど、一応動いたよ。 *** Wintext.c.origTue Aug 6 07:29:18 2002 --- Wintext.cMon Feb 3 21:20:30 2003 *************** *** 2497,2502 **** --- 2497,2506 ---- goto otherKey; } + if (readKey.KeyCode == '/') { + readKey.IsExtended = 0; + } + return readKey; }
569 名前:デフォルトの名無しさん [03/02/05 16:32] template haskell まだあ〜?
570 名前:デフォルトの名無しさん mailto:sage [03/02/12 03:53] Hoshkell
571 名前:デフォルトの名無しさん mailto:sage [03/02/23 03:23] 素朴な疑問Haskell使ってる人たちって情報系の人ばかり?
572 名前:デフォルトの名無しさん [03/02/26 20:26] 【何処も】情報科学総合スッドレ【板違い】 science.2ch.net/test/read.cgi/rikei/1046173479/l50
573 名前:デフォルトの名無しさん [03/03/12 16:17] 11 March 2003 GHC 5.04.3 Released
574 名前:デフォルトの名無しさん mailto:sage [03/03/12 17:10] どこが変わったのかわかりゃしねぇ。 ところで最近寂れてるな。 やっぱもうネタないのかね。
575 名前:デフォルトの名無しさん mailto:sage [03/03/12 19:03] Haskellコミュニティは議論は盛んなんだけどなー
576 名前:デフォルトの名無しさん mailto:sage [03/03/12 22:05] はやく日本語で本出ないかなー。
577 名前:デフォルトの名無しさん mailto:sage [03/03/13 01:50] lazy evaluation ってなんですか?
578 名前: [03/03/15 17:45] 遅延評価 (lazy evaluation) 遅刻の回数を基準にボーナスの額を決めること。 ttp://www.nurs.or.jp/~kneo/m_ti.html
579 名前:デフォルトの名無しさん mailto:sage [03/03/15 23:18] >>577 値が実際に必要となるまで引数の評価を遅らせること。 要求呼び出し(call by need)
580 名前:デフォルトの名無しさん mailto:sage [03/03/15 23:23] 命令型言語ではほとんど実現されていない。 引数の評価は何らかの副作用を伴うことがあり、 引数がいつ必要になるか正確に知るのは難しい。 また、要求呼び出しはスタックによる実現が難しい。
581 名前:デフォルトの名無しさん [03/03/16 00:47] www.generic-haskell.org/ ここで作られてるコンパイラを使っている人はいますか?
582 名前:デフォルトの名無しさん mailto:sage [03/03/16 23:20] >>579-580 説明ありがとうございます。
583 名前:デフォルトの名無しさん mailto:sage [03/03/17 12:38] Haskellerの中にはまたストリームベースを唱えている人もいるようだが
584 名前:デフォルトの名無しさん mailto:sage [03/03/17 23:18] ttp://www.sampou.org/haskell/report-j/preface-13.html
585 名前:デフォルトの名無しさん mailto:sage [03/03/18 13:48] 意味不明でっす
586 名前:デフォルトの名無しさん mailto:sage [03/03/18 20:49] >>583 この板にも居ますよ。たぶん数学屋の方でしょうけど。 ところでデータ構築子って理論的にカリー化できないのでしょうか? 最弱頭正規形を作ればいいのだから可能なのでは?と思いますが。
587 名前:デフォルトの名無しさん mailto:sage [03/03/19 13:58] 可能だからといって言語仕様にいれるとは限らないでしょう その辺は言語設計上の様々な観点を 考慮しながら決定するということで
588 名前:デフォルトの名無しさん [03/03/20 11:04] > 586 カリー化されてるんじゃないの?
589 名前:デフォルトの名無しさん mailto:sage [03/03/20 12:49] 余裕でっす
590 名前:デフォルトの名無しさん mailto:sage [03/03/20 20:56] されているね、十分。 ----code data Tree a = Node a [Tree a] instance (Show a) => Show (Tree a) where show (Node item xs) = show item ++ show xs -----実行 *Main> :type Node 1 forall a. (Num a) => [Tree a] -> Tree a *Main> Node 0 (map (Node 1) (map (map (flip Node [])) [[2,3],[4,5]])) 0[1[2[],3[]],1[4[],5[]]] ----- それとも、もしかして、こんなん? -----code追加 test (Node a) = a -----予想実行 *Main > test (Node 0) 0 *Main > test (Node 1 []) 1 ----- 上はともかく、下はあってもおかしくないし、欲しいな。 あとで少し探してみるか…。
591 名前:586 mailto:sage [03/03/23 22:27] >>588-590 すでに可能だったのか・・。 すまんかった。
592 名前:デフォルトの名無しさん [03/03/24 02:45] Windows版のHugsって、ドキュメントのバージョンがずれてない? .hlp .pdf .htmlが古くて、.chmだけちょっと新しいような? あと、Trexライブラリがうまく使えないんだけど、 もしかして再コンパイルが必要なのかな? Hugs mode: Restart with command line option +98 for Haskell 98 mode Reading file "C:\Hugs98\libraries\Hugs\Prelude.hs": Reading file "C:\Hugs98\libraries\Prelude.hs": Type :? for help Prelude> :load Hugs.Trex Reading file "C:\Hugs98\libraries\Hugs\Trex.hs": ERROR "C:\Hugs98\libraries\Hugs\Trex.hs" - Illegal export of a lone data constructor "EmptyRec"
593 名前:デフォルトの名無しさん [03/03/25 08:06] はあー、MLはまだ何とかなりそうだが、haskellさっぱりわかんね。
594 名前:デフォルトの名無しさん mailto:sage [03/03/25 15:07] 漏れは逆にMLの構文がわけわからん、つーか好みに合わん。 Haskellも一部複雑だけどね。 ttp://www.teu.ac.jp/kougi/koshida/Prog6/ とか見て動かしてみれば慣れるよ。
595 名前:デフォルトの名無しさん mailto:sage [03/04/05 15:58] haskell.org維持費用捻出できなくなったのかよ
596 名前:デフォルトの名無しさん mailto:sage [03/04/05 16:02] ワラタ 2ちゃんねらーで金出してやれよ。 トップページのλの隣にモナー飾ってもらえるかもしれんぞ。
597 名前:デフォルトの名無しさん mailto:sage [03/04/05 17:32] >>595 April fool じゃないのか?
598 名前:デフォルトの名無しさん mailto:sage [03/04/05 20:53] そうなら、もう消すだろ
599 名前:デフォルトの名無しさん mailto:sage [03/04/06 12:06] 1 Apr 2003 のニュースだから、永久保存かも
600 名前:600 [03/04/08 17:22] でも、去年は April fool なかったみたい age
601 名前:山崎渉 mailto:(^^) [03/04/17 15:36] (^^)
602 名前:デフォルトの名無しさん [03/04/25 17:31] ホシュ
603 名前:デフォルトの名無しさん mailto:sage [03/04/27 01:31] このゴールデンウィークにでも勉強したいと思いまフ。
604 名前:デフォルトの名無しさん [03/04/27 05:18] これ、行列の対角化とかできますか?
605 名前:デフォルトの名無しさん mailto:sage [03/04/27 14:04] 対角化の計算を自分で書けばもちろんできる。 行列計算用のモジュールも公式サイトから辿れる。 あとはやりたい本人の裁量次第でいくらでも。
606 名前:デフォルトの名無しさん [03/04/27 17:03] >>605 アリガd
607 名前:デフォルトの名無しさん [03/04/27 21:58] 初期のhaskellはschemeで作られたって本当? 昔Yale大学のサイトになんか書かれてたけど。
608 名前:デフォルトの名無しさん mailto:sage [03/04/29 08:28] けど・・けど・・
609 名前:デフォルトの名無しさん [03/04/29 14:15] Common Lisp?
610 名前:動画直リン [03/04/29 14:26] homepage.mac.com/hitomi18/
611 名前:デフォルトの名無しさん [03/05/05 17:03] f x = let a = 1; b = c g y = exp2 in exp1 f x = let a = 1; b = c g y = exp2 in exp1
612 名前:デフォルトの名無しさん [03/05/14 12:10] 最強
613 名前:デフォルトの名無しさん mailto:sage [03/05/15 17:49] logoが変わった
614 名前:デフォルトの名無しさん mailto:sage [03/05/16 14:53] 前よりよくなったねえ
615 名前:デフォルトの名無しさん mailto:sage [03/05/16 14:58] そ…、そうか? かなりビミョーなデザインだと思うが。
616 名前:デフォルトの名無しさん [03/05/16 23:07] λの回りにゴミが付着してる様に見える
617 名前:デフォルトの名無しさん mailto:sage [03/05/17 00:44] :: = 静的型付け -> = 高階関数 ∀ = 多相 => = 型クラス >> = モナド つーことかいな。
618 名前:デフォルトの名無しさん mailto:sage [03/05/17 01:29] そう考えると凝ってるな
619 名前:デフォルトの名無しさん [03/05/20 07:11] 凝ってる、っつーか、まんまやん。
620 名前:デフォルトの名無しさん mailto:sage [03/05/22 16:57] CGAの話止まってるけど、なかなかまとまらんのかね。
621 名前:デフォルトの名無しさん mailto:sage [03/05/26 19:20] >>619 featuring static typing, higher-order functions, polymorphism, type classes and monadic effects にそれぞれ対応してるという解釈のようだけどそれ分かって言ってんの?
622 名前:山崎渉 mailto:(^^) [03/05/28 12:56] ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
623 名前:デフォルトの名無しさん mailto:sage [03/05/30 18:14] 結局、wxWindowsのバインディングで終わりそうな気配だな
624 名前:遅報 mailto:sage [03/06/02 00:56] ghc major version up
625 名前:デフォルトの名無しさん mailto:sage [03/06/02 06:41] 6.0の目玉はTemplateということになるのかな? www.haskell.org/ghc/docs/6.0/html/users_guide/template-haskell.html
626 名前:デフォルトの名無しさん mailto:sage [03/06/02 17:06] 教えて君で申し訳ないのですけど、他の関数型言語と比べて Haskell のどのあたりが (・∀・)イイ! or (゚д゚)マズー なのですか? できれば、いい面と悪い面の両方を聞いてみたいです。
627 名前:デフォルトの名無しさん mailto:sage [03/06/02 17:37] >>626 (・∀・)イイ! 実装がいくつかある。 (゚д゚)マズー 末尾再帰じゃない。
628 名前:デフォルトの名無しさん mailto:sage [03/06/02 17:45] ○:数少ない遅延評価な言語の一つ △:clean は遅延/正格の切替えができるらしいが、Haskellは…
629 名前:デフォルトの名無しさん mailto:sage [03/06/02 18:58] >>627 実装がいくつかある。 SchemeやSMLも実装はいくつかあるが。 個々の実装の間に互換性がなければ、却って混乱するのでは?
630 名前:Lazy eva. [03/06/02 21:31] call by need 必要なら呼んで
631 名前:デフォルトの名無しさん mailto:sage [03/06/02 21:39] >>627 >(゚д゚)マズー >末尾再帰じゃない。 lazyだと末尾の最適化はいらないんじゃなかった? おれが勘違いしてるのかも知れないけど
632 名前:デフォルトの名無しさん mailto:sage [03/06/03 10:04] (´-`).。oO( Haskell の (・∀・)イイ! 点がこの程度しか挙がらなくていいのだろうか)
633 名前:デフォルトの名無しさん mailto:sage [03/06/03 22:56] いいところ: 純粋な関数型言語 厳格な型チェック 比較的豊富なライブラリ 遅延評価 わるいところ: 遅い flatなarrayが無い
634 名前:デフォルトの名無しさん mailto:sage [03/06/07 03:00] スレの伸びが lazy ...
635 名前:デフォルトの名無しさん mailto:sage [03/06/07 23:24] >>634 …実はこのスレの定義は既にすべて準備されていて、誰かが問いを放つとレスが見えるようになる?
636 名前:デフォルトの名無しさん mailto:sage [03/06/09 12:38] Haskell: The Craft of Functional Programming これの新しいバージョンがでるっていううわさは本当なの? Ruby系サイトのどこかで書いてあった気がするのだけど。
637 名前:デフォルトの名無しさん mailto:sage [03/06/09 13:06] www.amazon.co.jp/exec/obidos/search-handle-form/249-3518664-2502769
638 名前:637 mailto:sage [03/06/09 13:07] あ、だめだった。Amazonで検索すれ。
639 名前:デフォルトの名無しさん mailto:sage [03/06/09 22:20] >>635 逆かも? 問いが放たれてから、必要に応じて定義を考える。
640 名前:デフォルトの名無しさん [03/06/11 00:32] 問に対して常に同じ答えが返ってきます。
641 名前:デフォルトの名無しさん mailto:sage [03/06/11 09:51] 文脈が変っていても同じ質問に対しては同じ答えが返ってきます。
642 名前:デフォルトの名無しさん mailto:sage [03/06/11 09:52] >>640 問いの系列がmonadな演算で関連付けられてるので、 単独の問いに対しては当てはまらないカモッ!
643 名前:デフォルトの名無しさん [03/06/12 18:05] >>641 それではガイシュツ処理が出来ませんので、 不具合発生です。
644 名前:モナd mailto:sage [03/06/16 12:58] ΛΛ (´d`) .。o〇(monad∈モナー?)
645 名前:デフォルトの名無しさん [03/06/17 18:46] モナドは、人間から見て、副作用を扱ってるコードとほとんど 同じように見える。 人間にとって副作用のあるコードと同じように見えてる とすれば、モナドって何の意味があるの? 人間が関数プログラミングしやすくするために副作用が 禁止されてるんじゃ無かったの?
646 名前:デフォルトの名無しさん mailto:sage [03/06/17 18:51] 「ある」と「あるように見えるけどない」は違うだろ…
647 名前:_ mailto:sage [03/06/17 18:53] homepage.mac.com/hiroyuki44/
648 名前:デフォルトの名無しさん [03/06/17 18:55] >>646 違うけど、プログラマから見て同じように見えてるんだったら プログラマにとっては同じでは? コンパイラにとっての意味しかないのですか?
649 名前:デフォルトの名無しさん mailto:sage [03/06/17 20:07] 関数型の場合、コンパイラにとっては「ない」方が都合がいいけど、 人間にとってはあなたの言う通りあるように見えた方が扱いよいわけだ。 で、「ない」ものをあるように見せるモナドは、便利ってことにならない? それならモドキじゃなくて本物の副作用を認めてもいいじゃんという話はまた別
650 名前:デフォルトの名無しさん [03/06/17 20:29] >>649 > 人間にとってはあなたの言う通りあるように見えた方が扱いよいわけだ。 それは関数プログラミングに反するから、関数プログラミング の立場から見た場合、扱いが良いとは言えないんじゃないですか?
651 名前:デフォルトの名無しさん mailto:sage [03/06/17 20:29] 話が逆なんじゃないか?モナドは副作用をわざわざあるように見せるためのものでもないだろう。
652 名前:デフォルトの名無しさん mailto:sage [03/06/19 21:09] a <- hoge ってやったら、あとは a は見るからに完全に副作用の無い 関数型プログラミングであつかうわけだから、 モナドがあるおかげで関数型の意味がなくなるなんてことは全然無い。 結局モナドって、 副作用や、コードを書いた時点では決まらないものを 普通の関数の引数なんかにつかって破綻するのをさけるために、 型の前にMとかつけてそのままじゃつかえなくする仕組みでしょう。
653 名前:デフォルトの名無しさん [03/06/24 08:16] 日本語扱えるhaskellの処理系ってありますか?
654 名前:デフォルトの名無しさん [03/06/24 09:06] いやらしいリンク集作った homepage3.nifty.com/coco-nut/
655 名前:デフォルトの名無しさん [03/06/26 07:32] Haskellはじめますた。 面白いですね〜 ・リストの内包表現に萌えた ・無限データ構造萌え numForm n = n : numForm (n+1) とか。 あるもんをあるように書いたらいいって言うのがすどい。 詳しい方々、わかんないことがあったら教えてください。 アフォなんですが何とかがんばって基本を理解してから、 モナドを通って詳しい皆さんのところにゆきつきますので。 いまは、組み込み関数?を調べるのに困ってたりします。 IntをDoubleに変換するのってどうするの? IntとIntegerの変換どうするんでうか? とか、わからん。 「**」が解らなくて困ってた事も。 (-1)で懲りて、あらゆるところに括弧つけまくりのコードを書いてたり。
656 名前:デフォルトの名無しさん [03/06/27 10:48] >>655 fromIntegral :: forall b a. (Num b, Integral a) => a -> b toInteger :: forall a. (Integral a) => a -> Integer fromInteger :: forall a. (Num a) => Integer -> a
657 名前:デフォルトの名無しさん mailto:sage [03/06/27 13:05] 今年もICFPの時期が来ましたがみなさんいかがお過ごしですか?
658 名前:デフォルトの名無しさん mailto:sage [03/06/28 13:34] >>655 $をつかうと f (g (h x)) みたいなのを f $ g $ h x とかけて括弧削減。
659 名前:デフォルトの名無しさん [03/06/29 21:21] 初心者質問いいですか? GHCで、API、例えばIsDBCSLeadByte Char -> Bool を使いたいと思ったらどうすればいいのでしょう
660 名前:貧乏脱出!これであなたはお金持ち mailto:sage [03/06/29 21:30] 普通に働いてお金持ちになれるのは全体の1%のみって本当!? 本当にお金持ちになるにはやはり「副収入」が必要! 一日30分 おうちでコピペ、コピペ! 嘘だと思うんならランキング見てみてくださいよ↓↓ (直リン不可) www.adultshoping.com/addclickport.cgi?pid=1053353765 (直リン不可) ///////.......///////////////////////////
661 名前:デフォルトの名無しさん mailto:sage [03/06/29 22:10] 誤解があるようだが、モナドは純粋な関数型言語が 手続き風にコードを書くためのシンタックストリックに過ぎない。 拡張でもなんでもない。 (もちろんシーケンシャルのオプションと使われることが多いわけだが)
662 名前:デフォルトの名無しさん [03/06/29 22:22] _,..............._,....... ,ノ⌒::::::::::::::::::::::::::::::::::::⌒ヽ_ _ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヾ、 (::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) _ノ:::::::::::::::;ヘ::::::::::ノ⌒ヽ:::::::::::::::::::::::::::::::::) (::::::::::::::::::/  ̄ , ‐-、 |::::::::::::::::::::::::::::::::) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (:::::::::::::/ヽj _/ -‐-、 |::::::::::::::::::::::::::::::::) | トリックだ。 ):::::::::ヾllli_、_,;iiiillllllllli <::::::;へ:::::::::::::::::( | (::::::::::::/`i´ ,└=゚'┘ |::::| 6 |:::::::::::::::::::} < 副作用があるように見えているに `〜、 ゝ| _コ、_、 /|::::| ソ/::::::::::;〜" | 過ぎん。 ヾ|||ll|||||||||||l〉| 三ー'〜〜" | |||:二三|||| l ,三 ヽ、 \______________ |l ⌒ ||| :// ヽ=、-、_ |l、:( : : ||/ / ヽ, |  ̄\ /  ̄ / ノ / \
663 名前:デフォルトの名無しさん mailto:sage [03/06/29 22:37] サータン,サータン!
664 名前:デフォルトの名無しさん mailto:sage [03/06/30 00:06] ところで、日本語訳のページが見れなくないですか??
665 名前:デフォルトの名無しさん [03/06/30 02:53] >>659 わかるひといませんか〜
666 名前:デフォルトの名無しさん mailto:sage [03/06/30 07:59] >>664 www.sampou.org/haskell ならサーバマシンの調子が悪いそうです
667 名前:デフォルトの名無しさん mailto:sage [03/06/30 18:04] >>666 復活したようです。 >>665 いないんじゃないですか。人少なそうだし。 俺は、外界との繋がりはsystem :: String -> IO ExitCodeくらいしか知らない。
668 名前:659=665 mailto:sage [03/07/02 07:35] 検索の結果、MessageBoxを呼んでいる例は見つけました。(真似たらできました) でも、*.hiをバイナリ検索しても、IsDBCSLeadByteはインポートされて無いようです。 (CharNextとか、代用できそうなAPIも同様) これは、Haskellで全角文字を扱うなというお告げでしょうか…
669 名前:デフォルトの名無しさん mailto:sage [03/07/02 08:58] >>668 IsDBCSLeadByteってwindowsのAPI? そういうものはそのライブラリとリンクしてつかうんじゃないのかな。 haskellに入ってるわけがないというか。 www.haskell.org/libraries/ のInterfacing with other Languages and Systemsとか。
670 名前:デフォルトの名無しさん [03/07/02 13:46] >>668 >(真似たらできました) おー、あなたも私から見たらすどい。 よろしければ、MessageBoxを出すコードをこのスレに張って 共有していただければありがたいです。
671 名前:デフォルトの名無しさん mailto:sage [03/07/02 19:54] >>669 いや、GHC(Win版)には既にWin32 API(の一部)のHaskell用インポートが付いてるんですよ。 >>670 どーせ丸写しなので、いくらでも共有しましょう。 import Win32 main = messageBox nullHANDLE "Text" "Title" mB_OK たった二行。 コンパイル時に -package win32オプションが必要です。 (win32ディレクトリ以下はデフォルトでは見てくれないので) ↓見つけたページ www.haskell.org/pipermail/glasgow-haskell-users/2002-March/003110.html なお、同じようにしてMessageBeepを呼ぼうとしましたが、挫折中です。
672 名前:デフォルトの名無しさん mailto:sage [03/07/02 20:21] >>669 あ、でもリンク先のFFIとか使えばできそう?できるのか俺に? …ありがとうございます
673 名前:デフォルトの名無しさん [03/07/05 01:11] FranTkを使った事のあるかたは居られますか? 使おうとしたけど何だかよくわからんかった。(窓使いです)
674 名前:デフォルトの名無しさん mailto:sage [03/07/06 22:26] >659 ttp://www.sampou.org/haskell/report-j/basic.html >6.1.2 文字と文字列 >文字型 Char は列挙型のひとつで、16 bit の値からなり、Unicode 標準 [10] に準拠する。 Unicodeなので要らないのでは? ちゃんと実装されているならばだが。
675 名前:デフォルトの名無しさん mailto:sage [03/07/07 10:39] > ちゃんと実装されているならばだが。 内部ではUnicodeかもしれないけど、全角文字をgetCharで読むと二回に分けて来るんですよ…
676 名前:デフォルトの名無しさん mailto:sage [03/07/07 17:07] >>674 Unicodeとその(バイトでの)エンコーディングは別物だ。
677 名前:デフォルトの名無しさん mailto:sage [03/07/08 02:44] >>676 実際 I/O functionsがbyte読んでそれをかえすだけだから、 Charが16ビットである意味がないんだよな。 謎の設計。
678 名前:デフォルトの名無しさん [03/07/14 01:55] return () << [1,2,3] が [1,2,3] を返すのは何で? ()モナドの定義?
679 名前:デフォルトの名無しさん [03/07/14 01:56] ごめん。わかってると思うけど << じゃなくて >> の間違い
680 名前: mailto:sage [03/07/14 03:29] >>678 リストはモナドだから。
681 名前:デフォルトの名無しさん mailto:sage [03/07/14 03:58] そういや、漏れもIOモナドはちょっと分かったつもりだけど、 なんでリストがモナドなのがいまいちよく分からん。
682 名前:デフォルトの名無しさん mailto:sage [03/07/14 04:22] m がモナドのとき return () << m が m になるのはなんで? ()モナドの定義?
683 名前:デフォルトの名無しさん mailto:sage [03/07/14 04:29] また >> を間違えて << にしてまった 書いた後気づいたのだが return [3,4] >> [1,2] も [1,2] 返すのか () がポイントではなく return の方がポイントだった かきまぜてスマン
684 名前:デフォルトの名無しさん mailto:sage [03/07/14 04:42] return 1 >> [1,2] でも return 'a' >> [1,2] でも同じだな
685 名前:デフォルトの名無しさん mailto:sage [03/07/14 14:12] >>682 >>の型からわかる型推論。
686 名前:デフォルトの名無しさん mailto:sage [03/07/14 14:13] もっというと()はどのモナドでも返せる。
687 名前:デフォルトの名無しさん [03/07/14 18:52] getChar って結局何返すの? 参照透明性からいって 'a' が入力されたからといって IO 'a' が返るわけじゃないんだよね たびたび出る話題でスマンが毎回納得にいたらない
688 名前:デフォルトの名無しさん mailto:sage [03/07/14 19:05] IO
689 名前:デフォルトの名無しさん mailto:sage [03/07/14 19:27] >>687 意味不明。IO Charだけど?
690 名前:デフォルトの名無しさん mailto:sage [03/07/14 20:13] >>687 強いて言えば IO 'a'だろうが、それで参照透明性に何の問題が?
691 名前:デフォルトの名無しさん [03/07/14 22:08] そもそもモナドを理解するのにIOモナドから入る,っていうのが間違っている という気がする.モナドを理解するためには,次の論文を読むのが吉かと. Wadler, P. : Monads for functional programming
692 名前:デフォルトの名無しさん mailto:sage [03/07/14 22:22] >>691 www.research.avayalabs.com/user/wadler/topics/monads.html ここにあるやつ?
693 名前:デフォルトの名無しさん [03/07/14 23:45] >> 692 そうそう.
694 名前:デフォルトの名無しさん [03/07/15 00:39] 関数型では同じ関数なら何回呼んでも同じ値が返る建前では 実は暗黙のworldが渡されていて暗黙の新しいworldも返されている?
695 名前:デフォルトの名無しさん mailto:sage [03/07/15 00:47] モナドって、食べ物じゃなかったのか。
696 名前:デフォルトの名無しさん [03/07/15 01:05] 理解するのに論文を読ませる必要がある事自体に 何か問題があるような気もするがー。
697 名前:デフォルトの名無しさん mailto:sage [03/07/15 01:28] 今印刷して読んでます…辞書片手に…どなたか、厨房向けに噛み砕いて説明してホスィ
698 名前:デフォルトの名無しさん [03/07/15 01:31] >>697 _,..............._,....... ,ノ⌒::::::::::::::::::::::::::::::::::::⌒ヽ_ _ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヾ、 (::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) _ノ:::::::::::::::;ヘ::::::::::ノ⌒ヽ:::::::::::::::::::::::::::::::::) (::::::::::::::::::/  ̄ , ‐-、 |::::::::::::::::::::::::::::::::) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (:::::::::::::/ヽj _/ -‐-、 |::::::::::::::::::::::::::::::::) | トリックだ。 ):::::::::ヾllli_、_,;iiiillllllllli <::::::;へ:::::::::::::::::( | (::::::::::::/`i´ ,└=゚'┘ |::::| 6 |:::::::::::::::::::} < 副作用があるように見えているに `〜、 ゝ| _コ、_、 /|::::| ソ/::::::::::;〜" | 過ぎん。 ヾ|||ll|||||||||||l〉| 三ー'〜〜" | |||:二三|||| l ,三 ヽ、 \______________ |l ⌒ ||| :// ヽ=、-、_ |l、:( : : ||/ / ヽ, |  ̄\ /  ̄ / ノ / \
699 名前:デフォルトの名無しさん mailto:sage [03/07/15 06:43] >>682 return () >> [1,2,3] 後ろがリストなので、これはリストモナド returnを外して、>> を >>= に変換すると、 [()] >>= (\x -> [1,2,3]) 前のリストの要素それぞれに対して後ろの関数を呼んで、その結果を連結したものがこの式の値なので、 (\x -> [1,2,3]) () [1,2,3]
700 名前:デフォルトの名無しさん mailto:sage [03/07/15 08:15] >>694 その通り。IO a はHaskellの側から見ると、 data IO a = IO (World -> (a, World)) このような構造になっていて、実行結果がIOだった場合に、表示する前にWorldが渡されて実行される。 実際はそんな面倒なことしていないと思うけどね。
701 名前:デフォルトの名無しさん mailto:sage [03/07/15 08:48] 半分ぐらい読みました…まさに>>698 のおっしゃる通り…それ以後の式を全部λとして渡して、 でっかい合成関数を組み立てて、最後に一括して実行してるようなイメージでいいのでしょうか?→モナド (と同時に、実装までそうなってないよなあと信じたい)
702 名前:デフォルトの名無しさん mailto:sage [03/07/15 09:03] >>698 モナドを使えば副作用は「ある」というべきだろう。 たとえばモナドを利用したカウンタを利用して、 あるいは、ファイルに1, 2, ...と書き込んでループをつくれば、 あきらかにそこには副作用があるわけだ。 むしろWorldを変化させながら渡し続けるという発想の転換で(言語に対し) 無いように見せかけているだけだ。人間にとっては副作用は存在する。
703 名前:デフォルトの名無しさん mailto:sage [03/07/15 09:26] >>702 あるように見せかけているだけだろ? そうじゃなきゃモナドの意味がない
704 名前:山崎 渉 mailto:(^^) [03/07/15 09:34] __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
705 名前:デフォルトの名無しさん mailto:sage [03/07/15 11:33] >>701 よいはず。 あと、遅延実行されるのでそう実装しても効率は悪くならないと思う。
706 名前:デフォルトの名無しさん mailto:sage [03/07/15 18:29] >>703 逆だよ。というか循環論法。 そもそも関数型言語には本来副作用は存在し得ない。状態ってものが無いからね。 しかし、特に外部とアクセスするプログラムのためには副作用が必要だ。 関数型言語と、その副作用をともなう処理を、 副作用の種類(IOとか)毎の(内部状態を保持する)モナドを導入することで*分離*してるだけだ。
707 名前:デフォルトの名無しさん mailto:sage [03/07/15 18:34] >>705 701のイメージはあってるが、 > あと、遅延実行されるのでそう実装しても効率は悪くならないと思う。 遅延実行だからこそそういう式の組み立てと式の保存をやらないといけないわけで、 むしろ遅延評価だからと言ってそういう実装をするととんでもないことになる というべき。 通常の式の評価でも下手に(末尾)再帰すると未評価の式の列が莫大になって すぐオーバーフローする。
708 名前:701 [03/07/15 21:26] 大雑把に読みました。後半のパーサは読み飛ばしましたが… データ型としてのモナドは、要するにC++のクラスtemplate、のようなもの…ですよね? ということは、IO a -> aな関数が記述不可能なのは、言語の外を相手にしたIOモナドに限った制限で 一般的にはそんな制限は無い、で合ってます? 簡単なサンプルコードどこかにないかな…
709 名前:デフォルトの名無しさん mailto:sage [03/07/15 21:44] >>708 リストから成分を抽出できるでしょ。
710 名前:デフォルトの名無しさん mailto:sage [03/07/16 00:34] >>709 ありがとです。 で、>>681 氏と同じ疑問に行き当たるわけですが… リストが状態を持っているとは思えないのですが、なぜモナド? (a, b)とか他の一般の構造化型はモナドじゃ無いですよね。
711 名前:デフォルトの名無しさん mailto:sage [03/07/16 01:00] >>710 リストを丸ごと全部で値と思わずに一部だけ更新したいんじゃない? 一部だけ更新するような操作には普通副作用がある。 …違うかな?
712 名前:デフォルトの名無しさん mailto:sage [03/07/16 01:52] リストは >>= と return がモナド演算の法則を 満たしているからモナドなんじゃないかな (a,b)とか一般の構造型はコンテナの中身の個数が1個ではない定数なのでうまく モナド演算を定義できないような気がする リストモナドの中身は任意個数。IOモナドは1個固定。
713 名前:デフォルトの名無しさん mailto:sage [03/07/16 02:29] 眠れない… えーと、要するに、必然性は無いけど、 モナドということにすると [a] >>= (\e -> return (f e)) みたいな便利機能として使えるので モナドということにしてある、ということですか。 >>711 よく見て無いのですが、ライブラリリファレンスにMutable ArraysとしてIOArrayが書かれてますので、 もしリストモナドで一部の更新が可能なら、こんなもの用意しないと思うので、それは違う気が (我ながら無茶苦茶な論法だ…)
714 名前:デフォルトの名無しさん mailto:sage [03/07/16 02:51] あれもこれも、Haskellの和書が出ないのが悪い。
715 名前:デフォルトの名無しさん mailto:sage=705 [03/07/16 10:48] >>707 すまんが、そういうふうにする以外の方法が自分には想像できない。 doも普通の再帰なので問題はなさそうだが? >>711 リストモナド≒内包表記 副作用を発生できるモナドはIOモナドだけです。 >>710 ListとMaybeだけだね。 試しに、(a, b) でMonadを作ってみたが…きつい。 --- instance Monad ((,) a) where (>>=) (sub, main) f = (sub, main') where (sub', main') = f main return main = (bottom, main) bottom = bottom test = do x <- (("a", 2), 1) y <- return $ x+1 return $ y*2 --- *Main> test (("a",2),4)
716 名前:デフォルトの名無しさん [03/07/16 12:02] だれとはなくに 「型構築子」IO はモナドだけど IO a はモナドじゃないよ。 「型構築子」[] はモナドだけど [a] はモナドじゃないよ。
717 名前:デフォルトの名無しさん mailto:sage 702,706,707,709 [03/07/16 12:17] >>713 haskellのリストやアレイはは一部を変更すると全部コピー。 というのは、そのデータ(リスト等)が他の場所で使われるかもしれないから。 一部を変更したということがそのデータを使うプログラムの他の部分にも わからないといけない。 そのためには、使う部分全部をそのデータの内部状態をあらわすモナドでくるんで おく必要がある。 # 変更し終わったら、それはモナドの外に出してもいい。 >>715 701の件については、誤読していた。それ以降の式、ってのが何を指すのかわからない。 それはともかくとして、 (IO/状態)モナド内の計算の実行は、手続き型と同様にできるとおもうけど。 > 副作用を発生できるモナドはIOモナドだけです。 haskellプログラムがわからみればIOも他のモナドもかわらない。 プログラマから見たときも結局は同じこと。謎の内部状態をもつ モナドを受渡しながら処理を順次実行するわけだから。 内部で定義されたモナドでもそのモナドの性質をみとおさなければ、 副作用と同様でしょう。
718 名前:デフォルトの名無しさん mailto:sage 717 [03/07/16 12:30] 別のいいかたをすれば、711が書いているように、普通一部を変更すると 副作用が出るわけで、関数型言語では一般にはそれができない。 だが、その副作用/状態を追跡するモナド(STArray,IOArray等)を引数と して渡し続けながらの順次計算であれば一部変更もできるわけだ。
719 名前:デフォルトの名無しさん [03/07/16 12:45] だれとはなくに 「データ構築子」はファーストクラスだけど 「型構築子」はファーストクラスじゃないよ。
720 名前:デフォルトの名無しさん [03/07/16 13:13] だれとはなくに モナドは「型構築子」の性質であって、データの性質じゃないよ。
721 名前:デフォルトの名無しさん mailto:sage=699,700,705,715 [03/07/16 15:29] >>717 まず、すまんかった。 確かに中身を見なければ副作用を起こすことは可能だ。そちらの言う通り。 以降の式だが、自分は a >>= (\x -> b) の式に出てくるλのことだと思っている。 そして、715のそういうふうにとは、どでかい合成関数を作ってからそれを実行するということ。 もちろん、遅延実行されるので、少し作ってはそれを実行してというふうになると思っているが。 >(IO/状態)モナド内の計算の実行は、手続き型と同様にできるとおもうけど。 main = sequence_ $ reverse $ [putStr "\n", putStr "a", putStr "b"] こう言うのはどうする…? …特殊すぎるか。他は最適化されててもおかしくないやね。 >>718 少なくともIOArrayはIOモナドの一部であってモナドそのものではないと思うが。 >>719 しかし少なくともカリー化はされている。
722 名前:デフォルトの名無しさん mailto:sage [03/07/16 16:39] >>715 サンプルとして活用させていただきます で、勝手にインデント。 module Main where instance Monad ((,) a) where (>>=) (sub, main) f = (sub, main') where (sub', main') = f main return main = (bottom, main) bottom = bottom test = do x <- (("a", 2), 1) y <- return $ x+1 return $ y*2 >>721 表現が悪くて申し訳ないです。そのつもりでした。do A; B… と書いた時のB以降です。
723 名前:デフォルトの名無しさん [03/07/16 17:37] data Id a = Id a deriving Show instance Monad Id where Id x >>= f = f x return = Id foo :: Int -> Id Int foo arg = do { x <- ID arg ; x <- ID (x * 2) ; x <- ID (x + 1) ; return x } というHaskell のプログラムと、 int foo (int arg) { int x; x = arg; x = x * 2; x = x + 1; return x; } は、そっくり。上は副作用をつかってないですけど、 下は副作用をつかっています。 そんだけ。 int
724 名前:デフォルトの名無しさん [03/07/16 18:28] >>723 ID じゃなくて Id
725 名前:デフォルトの名無しさん [03/07/16 20:17] 突然ながら、FFIを試してみたり… #include "hsFFI.h" #include <stdio.h> void __stdcall print_hex(HsInt a) { printf("%x", a); } foreign import stdcall "print_hex" printHex :: Int -> IO () main :: IO () main = do printHex 1234 >ghc ffi.hs ffi_c.hc -fglasgow-exts Warning: retaining unknown function `_print_hex@4' in output from C compiler 動くんですけど、このWarningが消せない…
726 名前:デフォルトの名無しさん mailto:sage ... 717 718 [03/07/16 22:59] >>720 > 以降の式だが、自分は a >>= (\x -> b) の式に出てくるλのことだと思っている。 > そして、715のそういうふうにとは、どでかい合成関数を作ってからそれを実行するということ。 よくわからない。ダイナミックに関数を作ると? > ... > main = sequence_ $ reverse $ [putStr "\n", putStr "a", putStr "b"] 関数ポインタの配列をつくっておいて並べ替えるのかな。 >>721 > 少なくともIOArrayはIOモナドの一部であってモナドそのものではないと思うが。 確かに、モナドはそれぞれIOとSTだ。 モナドの一部っていうのもよくわからないが… monad-awareという感じか。
727 名前:デフォルトの名無しさん mailto:sage [03/07/16 23:31] >>725 __stdcall -> ccall、ffi_c.hc->ffi_c.c で ghc -ffi ffi.hs ffi_c.c とすると何のWarningもなくコンパイルを通った(Windowsではない)。
728 名前:デフォルトの名無しさん [03/07/17 01:25] 誰か Haskell の和書書いてくれよ。 5000円くらいまでなら買うからさ。 和書ないとやる気が出ねぇし、普及なんて夢のまた夢だよ。
729 名前:デフォルトの名無しさん [03/07/17 02:06] Haskellはドイツ語でクシャミの事
730 名前:デフォルトの名無しさん mailto:sage [03/07/17 04:00] >>727 拡張子を変えたら警告が出なくなりました。 よくよく見てみれば.hcってコンパイラが生成したCソース用の拡張子… どうも、お騒がせしました。
731 名前:デフォルトの名無しさん mailto:sage [03/07/19 19:40] >>729 くしゃみが出るくらいに香辛料の効いたカレーを“Haskell Curry”と云う!?
732 名前:デフォルトの名無しさん mailto:sage=721 [03/07/19 22:54] >>726 >よくわからない。ダイナミックに関数を作ると? その通り。 (.) が関数を合成するのと同じように。 >関数ポインタの配列をつくっておいて並べ替えるのかな。 引数等を保存しておく必要があるので、それをすると、λと変わらないと思う。 >>722 無理しているので、return a >>= k = k a が成り立たなくなってたりしているので注意。 ついでに、前に作ったモナドをどうぞ。 面倒を少し減らす程度のものですが。 --- module Main where --type ReadS a = String -> [(a,String)] newtype ReadR v = ReadR { runr :: ReadS v} 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)]) rread :: (Read a) => ReadR a rread = ReadR reads rlex :: ReadR String rlex = ReadR lex test :: String -> (Int,String) test str = head test' where test' = do rread `runr` str --- Main> test "125 " (125," ")
733 名前:デフォルトの名無しさん mailto:sage [03/07/21 01:46] Randomを使ったコードを少し書いて見ました。 毎回の let (r2, g2) = random g1 in … 数字は使うたびに増やす…が面倒だったので、 モナドにすれば好きな時に r2 <- nextRandom とか書けるのかなあ、とか思ったり。 (既にあるのかもしれませんが) >>732 うう、ありがとうございます。しかし、私のレベルでは何をやっているのかと用途の両方がわかりません…。
734 名前:デフォルトの名無しさん mailto:sage [03/07/21 01:52] >>732 |無理しているので、return a >>= k = k a が成り立たなくなってたりしているので注意。 モナドの法則を満たさなくてモナドといえるの?
735 名前:デフォルトの名無しさん mailto:sage [03/07/21 02:33] module RandomProgression where import Random data RandomProgression r a = RP (r -> (a, r)) nextRandom :: (RandomGen r, Random a) => RandomProgression r a nextRandom = RP (\r -> random r) instance Monad RandomProgression r a where --(>>=) :: RandomProgression r a -> (a -> RandomProgression r b) -> RandomProgression r b RP x >>= f = RP (\r -> let (a, r') = x r in let RP b = f a in b r') --return :: a -> RandomProgression r a return value = RP (\r -> (value, r)) 書いてみました…instanceでエラーが出ます…わかりません… ↓こんな風に使えたらいいなと思ってる let (answer, g) = (do a <- nextRandom; return (a `mod` 10)) (mkStdGen 100)
736 名前:デフォルトの名無しさん mailto:sage [03/07/21 02:45] 括弧が要るんですね… instance Monad (RandomProgression r) where 実行用に eval :: (RandomGen r) => RandomProgression r a -> r -> (a, r) eval (RP e) r = e r 書き足して RandomProgression> eval((do x <- nextRandom; return (x `mod` 10)) :: RandomProgression StdGen Int) (mkStdGen 10) (7,432453652 1655838864) 動いたー! どうも、スレ汚しごめんなさい
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-?