1 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:19:28.26 ] haskell.org ttp://www.haskell.org/ 日本語サイト ttp://www.sampou.org/cgi-bin/haskell.cgi ttp://www.shido.info/hs/ 過去ログ 関数型プログラミング言語Haskell Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/ Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/ Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/ Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/ Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/ Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/ Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/ Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/ Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/ Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/ Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/ Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/ Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/ Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/ Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
741 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 20:17:30.41 ] >>740 確認したいんだが、 MkT ∈ (Int->T) MkT ∈ (Bool->T) MkT ∈ (String->T) ・・・ これは全て AND で結ばれているんだよな つまり、全ての積集合を意味しているんだよな {MkT ∈ (Int->T)} AND {MkT ∈ (Bool->T)} AND {MkT ∈ (String->T)} ...
742 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 20:46:56.98 ] >>741 そうだね ANDだね
743 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 20:58:30.82 ] 積じゃなくて直積じゃね?
744 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 21:00:47.10 ] >>743 どうして?
745 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 21:21:11.49 ] ごめん勘違い、そこは積集合であってる
746 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 02:57:49.52 ] (Int -> T)は { ⊥, (\x -> T), (\x -> let _ = x + 1 in T), ... } (String -> T)は { ⊥, (\x -> T), (\x -> let _ = x ++ "foo" in T), ... } forall a. (a -> T)は { ⊥, (\x -> T) }
747 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 03:05:14.44 ] ちょっと間違い forall a. (a -> T)は { ⊥, (\x -> T), (\x -> let _ = x in T), ... } だった つまり書く集合の内xをIntなどの具体的な型として 扱っていない項だけが残る
748 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 07:23:19.60 ] >>746 , >>747 すげー分かりやすかった なるほど、forall a. a の時のように、 ちゃんとそれぞれの型の場合の取り得る値の集合の積で考えられるんだ 合点がいった ありがと スッキリしたから、もう少し先まで読み進めてみる
749 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 12:01:47.26 ] 【言語別成果物】 PHP「掲示板作りました!」 Ruby「Railsで住所管理アプリ作りました!」 Java「帳票管理ソフト作りました!」 ActionScript「ゲーム作りました!」 Lisp「Lisp作りました!」 Haskell「美しい言語だ…(成果物無し」 Haskellやる理由ってエンジニアとしてのステータスなんだよね 昔の言語LISPに触れるとか、古参気取ったり インテリンゲンジャを気取るためにHaskellやってますとかね 馬鹿じゃねーの?wwwwwwwwwwwww 死ねよいいから お前ら目さませよクズ!?!!? 本当に!! おまえらさ!? Haskellやってて 名に作ったの? クズHaskell使い「作ったとかじゃなくて・・・そもそも何故作るのか」 スキルアップ(笑)で終わってると思うよお前ら Matzの布教活動に釣られたクズ当然だなwwwwwwwwwwwwwwwwwwwwwwwwwwww
750 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 12:07:21.59 ] > インテリンゲンジャ これは新しい
751 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 12:09:43.91 ] 難しいがかっこいい マイナーがかっこいい とか美徳感じてるクズばっかりだからな
752 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 12:22:52.87 ] また、pearl忍者が復活したのか。偏狭な視点と幼稚臭い書き込みですぐ分かる。
753 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 12:34:25.86 ] インテリゲイシャとかいいな 高学歴娼婦みたいで
754 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 12:46:48.45 ] テルマエ・ロマエにそんなのが出てくるな
755 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/01(木) 13:27:09.96 ] 「験者 (げんじゃ)」かな? 僧侶や修験者のこと。 「げんしゃ」だと資産家のことを意味する方言 (古語) 。 www.weblio.jp/content/%E3%81%92%E3%82%93%E3%81%97%E3%82%83 お高くとまっている様子を言うこともあるのでこの場合はこっちの方が妥当かも。
756 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 13:34:42.64 ] >>753 AVで笛吹いたりするのか
757 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 14:11:47.76 ] >>752 >>Lisp「Lisp作りました!」 この一行の手抜きで、忍者ではないと判る。
758 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 14:42:54.03 ] ダークス創ったじゃないか
759 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 16:02:15.78 ] お前が作ったわけじゃないだろ 話の主軸を見誤るな
760 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 16:34:30.58 ] 成果を増やすより無駄を減らすことに興味があるんだろう 特に、数学を知らないことで無駄に遠回りしてしまうことを恐れている
761 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 16:40:52.53 ] 無駄を減らす事は重要だな。 パイオニアがやる事とは違うが。
762 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 17:01:30.78 ] 山本和彦のLISPにいた頃には得られなかった悟りが開けたみたいだなHaskellのおかげで
763 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 17:07:15.13 ] こんにちは Haskellできる人は凄いと聞きました macintoshgarden.org/sites/macintoshgarden.org/files/screenshots/Traitor_heads_0.jpg このゲームをWindowsに移植してください お願いです;;
764 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 20:36:10.70 ] Macでこんなゲームがあったんか
765 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 21:40:37.11 ] >>749 掲示板とか住所管理とかしょぼいのばっかだな、、、
766 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 21:48:26.24 ] yesodのチュートリアルでblogとかtwitterもどき作る例みたいなものぐらいはあっていいかもな そういえばrailsが出た頃は15分でblog作るデモとかあったな 実用性のアピールにはあぁいうインパクト大事
767 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 21:54:11.82 ] だよな なんかさ 高速化〜言語がどうたら とか難しい話言われてもちっともうれしくねえし そういうのつまんなくね ゲームとかブログとか作るとかの法が楽しいし 本当に馬鹿だよな 最適化とか高速化とかつまんね 〜〜を返してみる とか やめて欲しい 実用性のインパクトが大事 ニコニコ動画はフラッシュプレイヤー作ってますとかインパクトなさすぎるのとおなじだね
768 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 21:54:55.57 ] 正直さが足りない 無理してる布教に釣られたクズばっかり
769 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:02:06.47 ] O'REILLY の「Developing Web Applications with Haskell and Yesod」って、 O'REILLY のサイトだと 300 ページって書かれてるのに、 他の Amazon とかだと 100 ページつて書かれてるんだよな どっちだよ 100 ページってハンドブック?
770 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:11:32.18 ] >>755 インテリゲンチャのタイポだろ。なんだ修験者って。
771 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:50:53.25 ] それも淡々と作るというより バグやエラーをあえて発生させそれを強い型付けとかランダムテストを使いながら 確実に取り除いていく様子を見せるようなデモがいいだろうな 簡単に作れるとかだと「じゃあrailsでいいよね」とかいうオチになるから
772 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 01:29:04.91 ] それよりKent BeckとかtwadaあたりがHaskellに乗り換えたけどいいよって言うだけで十分じゃないか? あとはIIJあたりも社内Haskellで統一して、MOGOKやめてYesodのサービス始めれば援護になる。 なんでそうならないんだろうね。
773 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 09:06:18.04 ] 「しゅげんじゃ」も知らんのか。
774 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 10:06:46.62 ] インテリ顔射
775 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 21:14:41.55 ] NumでないとBitsに成れないって不条理じゃね? 別に四則演算なんてしなくても ビット演算したいケースなんて普通にあるだろ Word32でnewtipeした型をBits宣言したいけど 四則演算は禁止したい こんなときどうすれば良いの?
776 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 22:47:19.28 ] ttp://snak.tdiary.net/20091020.html これ↑を読んでたんですけど Functorのインスタンスを説明するところで((->) e)はファンクタだって記述がありました。 GHCIとかで:typeしてもエラーにしかならないんですけど (->)ってのは普通の演算子じゃなくて、型宣言のところに出てくるアレって解釈であってますか? よくわかってないですが、型より一段階メタな種を扱う演算子みたいな扱い?? もし可能であれば、((->) e)のFunctor実装がどんな感じになるか教えてもらえないでしょうか。
777 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 23:25:53.07 ] >>775 Bitsクラスをただのビット列表現と解釈しているから不条理に思えるのでは? ライブラリドキュメントにはこうハッキリと書かれている The Bits class defines bitwise operations over integral types. これは、integral types に対してビット演算を提供するクラスなんだよ だから fromIntegral 関数を持つ Num クラスのインスタンスである必要がある integral types ではない型に対してビット演算を提供するクラスは、 今のところ標準ライブラリには入っていない (HackageDB にも、貴方の望むライブラリは今のところなさそうだ) また、Num のクラスメソッドを使用した場合に実行時にエラーを出す方法はあるが、 GHC によるコンパイル時にエラーを出す方法は、これまた今のところない よって、そのようなビット列表現および演算するクラスが必要なら、 残念ながら自作するしかない
778 名前:777 mailto:sage [2012/03/02(金) 23:27:31.24 ] >>777 訂正 誤) だから fromIntegral 関数を持つ Num クラスのインスタンスである必要がある 正) だから fromInteger 関数を持つ Num クラスのインスタンスである必要がある
779 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 23:29:54.57 ] サンクス エニウェイ
780 名前:777 mailto:sage [2012/03/03(土) 00:09:57.84 ] >>776 > GHCIとかで:typeしてもエラーにしかならないんですけど では、そのすぐ上に Either e も「Functor のインスタンス」だという説明がありますが、 これも :type を試されましたか? エラーが出ますよね だって、Either も (->) と同じように関数や演算子じゃないから 「〜は*のインスタンス」と言った場合、〜の部分には「型」がきます 型の情報は :type では得られません(:type は値の型情報を得るもの) 型の情報は :info などで得られます ただし、正確には :info には型ではなく型構築子を指定しないといけません (たとえば :info Either e ではなく :info Either) と言うことで、((->) e) は単なる型であり、意味上は何も特別なことはありません 試しに :info (->) をすれば、((->) r) 型が Functor のインスタンスだと分かります 正確に言えば (->) が種 * -> * -> * の型で、((->) e) が種 * -> * の型です ((->) e) 型のFunctor実装は処理系依存でライブラリでは公開されていませんが、 次のように解釈できるような実装になっているはずです instance Functor ((->) e) where fmup f g = f . g
781 名前:780 mailto:sage [2012/03/03(土) 00:15:43.68 ] >>780 くそっ、また訂正だ 誤) fmup f g = f . g 正) fmap f g = f . g
782 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:31:28.38 ] >>776 instance Functor ((->) e) where fmap = (.)
783 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:37:41.58 ] サンクス エニウェイ
784 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:48:51.17 ] >>780 >>782 なるほど、型と値をごっちゃに考えてたせいで要領を得ない質問になってました。 手がかりは頂いたので、もうちょっと考えてみます。 詳しい解説ありがとうございました。
785 名前:780 mailto:sage [2012/03/03(土) 00:56:05.16 ] >>784 手がかりついでに >>776 > (->)ってのは普通の演算子じゃなくて、型宣言のところに出てくるアレって解釈であってますか? > よくわかってないですが、型より一段階メタな種を扱う演算子みたいな扱い?? (->) が演算子(関数)ではなく、種 * -> * -> * の型であることは先ほど言いましたが、 これは同時に「型構築子」とも暗に言いました((->) e は型構築子ではありませんよ) 意味上は特別なことはありません、単なる型構築子です だから例えば f :: Int -> String -> Bool -> Maybe Char という型の関数は、 本当は f :: (->) Int ((->) String ((->) Bool (Maybe Char))) と型シノニムを書くべきで、 でも何も特別なことをしなくても中置演算子のように書けるのは一種の構文糖衣なんです 本来、アルファベットではなく演算子の形をした識別子を型構築子として使って中置したかったら、 識別子をコロンで始めないといけませんから(:* とか :+: とか :-> とか)