1 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 01:34:05 ] C/C++>>>>(越えられない壁)>>>Haskell
449 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 02:44:08 ] www.haskell.org/bio.html ( ・∀・) <呼んだ?
450 名前:デフォルトの名無しさん mailto:dage [2006/12/14(木) 12:04:41 ] 今日はUnsafe IOの日だから中に出しちゃだめー!!!
451 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 17:34:55 ] >>443 データ構造書くのはIOを入れずにやれという暗黙のメッセージだと思う プログラムのしくみ本体とIOの部分を分けるということ その方が実際動作が速いみたいだし
452 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 21:30:35 ] もう、中に出すからforkIOしちゃったじゃないo(*`ε´*)o
453 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 21:49:49 ] HashTableがIOを返すのがにんともかんとも・・・。
454 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 20:27:21 ] 本スレは活気があっていいなぁ・・・
455 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:32:22 ] また俺がAA書いてやろうか?
456 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 10:19:52 ] haskell中級者になったクマきぼん
457 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 23:04:25 ] >>456 俺が初心者な以上、それは無理ってもんだ
458 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 00:06:46 ] 今でも遅延ストリーム萌な人いませんか?
459 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 01:35:34 ] みなさんハスケルのどこが萌えですか。 僕は似たような記号を多用するその文体のとっつきにくさに萌えです。
460 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 01:42:02 ] やっぱ>>447 じゃね?
461 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 03:06:45 ] 俺はモナドという不思議な雰囲気を持ったツンデレ美少女なところに萌えてる。 haskellたんを知ってから仕事に全く集中できなくなってしまったよ・・・
462 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 06:46:57 ] あの、質問しても良いです? 「ふつうのHaskellプログラミング」からなんですが、 length [""] -> 1 length [] -> 0 の""というのは文字が一文字も無い文字列を表しているのでしょうか? もう一つ。 a b c みたいに一行ずつ保存されているファイルは、エディタからはそうみえるだけで 実際には"a\nb\nc\c"みたいに保存されているのでしょうか? そうじゃないとlines関数でリストに出来ないですもんね?
463 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 17:38:31 ] >の""というのは文字が一文字も無い文字列を表しているのでしょうか? その通り。 >実際には"a\nb\nc\c"みたいに保存されているのでしょうか? その通り。
464 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 16:06:05 ] >>463 回答有り難うございます!
465 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 07:23:21 ] こういう関数をHaskellで書くとしたら どう書くのがベターでしょうか? # Rubyですが def hoge(ary) ary.each_index do |i| j = rand(i+1) ary[i], ary[j] = ary[j], ary[i] end end
466 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:09:05 ] >>465 こんな感じになった。やたらと面倒だったので改善案募集。 {-# OPTIONS_GHC -fglawgow-exts #-} module Test where import System.Random import Data.Array.IArray import Data.Array.ST import Control.Monad.ST hoge :: forall a i e. (IArray a e, Ix i, Random i) => a i e -> StdGen -> (a i e, StdGen) hoge ia gi = runST act where act :: forall s. ST s (a i e, StdGen) act = do ma <- thaw ia let _ = ma :: STArray s i e g' <- shuffle ma gi first ra <- unsafeFreeze ma return (ra, g') (first, last) = bounds ia shuffle a g i = case ran of [] -> return g _:next:_ -> do let (j, g') = randomR (i, last) g x <- readArray a i y <- readArray a j writeArray a i y writeArray a j x shuffle a g' next where ran = range (i, last)
467 名前:466 mailto:sage [2007/01/11(木) 23:19:28 ] まちがってた。 {-# OPTIONS_GHC -fglasgow-exts #-} module Test where import System.Random import Data.Array.IArray import Data.Array.ST import Control.Monad.ST hoge :: forall a i e. (IArray a e, Ix i, Random i) => a i e -> StdGen -> (a i e, StdGen) hoge ia gi = runST act where act :: forall s. ST s (a i e, StdGen) act = do ma <- thaw ia let _ = ma :: STArray s i e g' <- shuffle ma gi (range bo) ra <- unsafeFreeze ma return (ra, g') bo@(_, last) = bounds ia shuffle a g [] = return g shuffle a g (i:is) = do let (j, g') = randomR (i, last) g x <- readArray a i y <- readArray a j writeArray a i y writeArray a j x shuffle a g' is
468 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 17:10:31 ] >>465 >>467 の人のようにこういう操作はArrayの方が得意だけど無理矢理やってみた 手抜きして右からまわしてる import Random -- main = print [1,2,3] >> hogeIO [1,2,3] >>= print hogeIO :: [a] -> IO [a] hogeIO xs = getStdRandom (hoge xs) hoge :: (RandomGen g) => [a] -> g -> ([a], g) hoge xs g = foldr iter ([],g) xs where iter x (xs,g) = (x':xs', g') where ((x', _:xs'), g') = replaceR x (x:xs) g replaceR :: (RandomGen g) => a -> [a] -> g -> ((a, [a]), g) replaceR x xs g = (replace i x xs, g') where (i,g') = randomR (0, length xs - 1) g replace :: Int -> a -> [a] -> (a,[a]) replace n x xs = (z, ys ++ x:zs) where (ys, z:zs) = splitAt n xs
469 名前:468 mailto:sage [2007/01/13(土) 21:04:49 ] Stateで書き換えてみたけど相変わらず長い (replaceやmainの定義は同じ) import Control.Monad.State type Rand a = State StdGen a hogeIO :: [a] -> IO [a] hogeIO xs = do g <- newStdGen return $ evalState (hoge xs) g hoge :: [a] -> Rand [a] hoge xs = foldr ((=<<).iter) (return []) xs where iter x xs = do (x', _:xs') <- replaceR x (x:xs) return (x':xs') replaceR :: a -> [a] -> Rand (a,[a]) replaceR x xs = do i <- State $ randomR (0, length xs - 1) return $ replace i x xs
470 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:20:57 ] runSTとかunsafeFreezeとかさっぱりわからん。 なんかくやしい。
471 名前:デフォルトの名無しさん [2007/02/14(水) 00:17:05 ] 良スレ 保守
472 名前:380 mailto:sage [2007/02/14(水) 23:30:00 ] 【第一部】 AAでHaskellのお勉強(超初心者用) >>380-410 【第二部】 AAで圏論のお勉強(入門編) Coming soon!
473 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:00:34 ] ,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ヾ;;;ハ ノ .::!lリ;;r゙ 圏論は難しい・・・ `Z;i 〈.,_..,. ノ;;;;;;;;> ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f そんなふうに考えていた時期が ~''戈ヽ `二´ r'´:::. `! 俺にもありました
474 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:01:18 ] / .\ / .\ \ / \ / \ ___________ . / \ ./ \ / | \/ \/...| | | | | | | | | .._ |_| |_|_.. | | さあ‥ 逝こうか‥‥ | | | | | | | | | | | | | | | |/ ..\| | | | | | .._|/| _ _ _ _ _ _ _ _ ...|\|_ / ..| | _−_−_−_−_− _ | | \ | |/_/━ ━ ━ ━ ━ ━\_\| | .._| /_/━ ━ ━ ━ ━ ━ ━ \_\.|_ /_/━ ━ ━ ━ ━ ━ ━ \_\ / /━ ━ ━ ━ ━ ━ ━\ \
475 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:54:57 ] ∩___∩ | ノ ヽ / ● ● | たった一つの命を捨てて |◎) ̄  ̄|| ̄ ̄ ) ミ 生まれ変わった不死身の体 彡、___||_/`\ 鉄の圏論を叩いて砕く / __ /´> ) クマーンがやらねば誰がやる (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
476 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 23:04:19 ] _i^i__i^i_ i^i ._i^i_ __, -―- 、___ |*||*| ∩___∩ i^i _i^i_ | | |@ll|(_/,,,, ,,,, ヽ_) |≡||≡|| ノ ヽ ([])|;□;|.(≡)|_| |● ● | どうすれば圏論をわかりやすく . 二二/ ● |二二( (二二二二 彡(_●_ ) ミ 説明できますかね? | ミ ) ) / ` ''∪'' / ヽ 彡、 _ノ Gノ'フ= ___ / /i ` ー '" iヽ | / ヽ / / | ! / / | | | .l. i ..──|ヽ ヽ/─==i─Y-(_ノ──i二i───(⌒) ___ヽ /ヽノ └-┘ ┴ ..└┘ . ̄ | ___ i
477 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 01:59:18 ] ∩___∩ |ノ⌒ ⌒ ヽ / ●) ●) | Let's | ( _●_) ミ Haskell♪ 彡、 |∪| 、` / ヽノ ヽ / 人 \\ 彡 ⊂´_/ ) ヽ__`⊃ / 人 ( (_ノ (_)
478 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:00:25 ] A B ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / 彡、 |∪| ,/ / ヽノ /´ ここにオブジェクトAとオブジェクトBがあるクマ
479 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:02:12 ] A → B ∩___∩ | ノ ヽ / > < | じつはAさんはBさんを好きなんだクマ | //// ( _●_) ミ 彡、 l⌒l ノ / __ \ \ヽ . (___) \__)
480 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:07:27 ] ∩___∩ | ノ ヽ / ● ● | と、いうように | ( _●_) ミ ある対象とある対象がなんらかの関係をもっていることを 彡、 |∪| 、`\ 圏論では「射」と言うクマ / __ ヽノ /´> ) (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
481 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:09:55 ] ∩___∩ | ノ ヽ A → B / ● ● | | ( _●_) ミ この場合、Aさんを「ドメイン」、Bさんを「コドメイン」と言うクマ 彡、 |∪| 、`\
482 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:15:49 ] ∩___∩ | ノ _, ,_ ヽ / ● ● | 別にBさんを好きじゃなくてもいいんだクマ | ( _●_) ミ Bさんを嫌いでもいいし 彡、 |∪| ノ BさんはAさんの嫁でもいいし ⊂⌒ヽ / ヽノ ヽ /⌒つ AさんがBさんをレイ-プする、という関係でもなんでもいいクマ \ ヽ / ヽ / \_,,ノ |、_ノ
483 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:19:20 ] ∩___∩ | ノ ヽ / ● ● | A → B | ( _●_) ミ ココ!! 彡、 |∪| 、`\ / __ ヽノ /´> ) この図では「→」がAさんとBさんの関係を表してるクマ (___) / (_/ 関係というものには方向性が付き物なんだクマ | / | /\ \ この「関係を表した矢印」こそが「射」クマー! | / ) ) ∪ ( \ \_)
484 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:20:05 ] てらわかりやす
485 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:21:35 ] まだまだ続クマ? \  ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ (´´ \(⌒-⌒) o (´⌒(´ (・(ェ,,)・ )つ⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
486 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:40:43 ] / ̄) ∩____∩. | | AさんからBさんへの「射」は1つとは限らないクマー! | ノ ヽ.| | / ● ● || | くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj「好き好き射」 | ( _●_) .ミ | 彡、. |∪| | くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj「エロエロ射」」 / ,へ  ̄ ̄`ヽ / / \ t──┐ | (__/ > ). | |_ / / (___) ( \ \__)
487 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:56:02 ] 、 l _, ヽ/⌒ヘ~ ., 't,_,ノ丶 ∩、 ∩ / ! '` | '──-' '\ ,/ ● 'i, / ( _●_) ● i, 彡 しノ ミ あたまをやわらか〜くするクマ〜 |`:、\ 'ii __,/ 'i、 ̄~~ ij 乙__ノi ^-ァ __,ノ r^~"i' 'l !、 ! l ~^''!, ,_ ,!_ \ l,~^''‐--::,,⊃ ) ) ) ) `'‐’
488 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:02:26 ] X Y Z ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / 彡、 |∪| ,/ / ヽノ /´ ここにオブジェクトXとオブジェクトYとオブジェクトZがあるクマ
489 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:06:57 ] ∩____∩ / ヽ X → Y YさんはXさんのいとこクマ / ● ● | Y → Z ZさんとYさんのいとこクマ | ( _●_ ) ミ 彡、,, |∪| / /__ ヽノ l\ (___u) (uニ ).  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
490 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:09:49 ] |::::::::::::::::::::::::::::::: |" ̄ ゙゙̄`∩:::::::::::::::: |,ノ ヽ, ヽ::::::::::::::::::::::::: X → Y |● ● i'゙ ゙゙゙̄`''、:::::::::::::::: | (_●_) ミノ ヽ ヾつ:::::::::: ↓ | ヽノ ノ● ● i:::::::::: {ヽ,__ )´(_●_) `,ミ::::::: Z | ヽ / ヽノ ,ノ:::::: あれ?XさんとZさんは・・・いとこ?
491 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:17:59 ] ∩─ー、 / ● 、_ `ヽ / ( ● ● |つ | /(入__ノ ミ 所詮、XとZが 、 (_/ ノ いとこだろーと、はとこだろーと \___ノ゙ 関係ないのさ・・・ / 丶' ⌒ヽ::: / ヽ / /::: ただひとつ言えることは / /へ ヘ/ /::: XからZへのなんらかの関係があるかもしれない / \ ヾミ /|::: ってことだ (__/| \___ノ/::: / /::: これを圏論では射の「合成」と呼ぶ / y )::: / / /::: / /:::: X → Y / /::::: ( く:::::::: ↓ |\ ヽ::::: | .|\ \ ::::: Z \ .| .i::: \ ⌒i:: \ | /:::: ヽ 〈:: [XからZへの矢印が考えられる] \ | i:::::: (__ノ: __ノ )::::: (_,,/\
492 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:19:52 ] | |.-──-、 | : : : : : : : : \ |: : : : : : : : : : : ヽ |-…-…-ミ: : : : :', | '⌒' '⌒' i: : : : :} | ェェ ェェ |: : : : :} | ,.、 |:: : : :;! どこで出ていこうかな・・・・・ | r‐-ニ-┐| : : :ノ |! ヽ 二゙ノ イゞ‐′ | ` ー一'´丿 \ | \___/ /`丶、 | /~ト、 / l \
493 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:50:43 ] ,..-──- 、 /. : : : : : : : : : \ 関数Xは /.: : : : : : : : : : : : : : ヽ クラスYを引数にする ,!::: : : :,-…-…-ミ: : : : :', X(Y) {:: : : : :i \ / i: : : : :} ちなみにYは {:: : : : | ェェ ェェ |: : : : :} 合成のほかの例え!! Zという属性を. , 、 . { : : : :| ,.、 .. |:: : : :;! 持っている ヽ ヽ. _ .ヾ: :: :i r‐-ニ-┐ .| : : :ノ } >'´.-!、ゞイ! ヽ二゙ノ イゞ‐′ | −! \` ー一'´丿 \ ノ ,二!\ \___/ /`丶、 /\ / \ /~ト、 / l \ / 、 `ソ! \/l::::|ハ/ l-7 _ヽ
494 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:52:45 ] _ /- イ、_ __ /: : : : : : : : : : : ( 〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ 〈⊃ } {:: : : :ノ --‐' 、_\: : ::} ∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} | ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ / ● ● | / ,,・_ | //  ̄7/ /::ノ | ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/ 彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ / __ ヽノ / / // |//\ 〉 (___) / / // /\ / わかりづらいクマ
495 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:10:53 ] _ /- イ、_ /: : : : : : : : : : : ( /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ; 関数X → クラスY .{:: : : :ノ --‐' 、_\: : ::} .{:: : :ノ ,_;:;:;ノ、 ェェ ヾ: ↓ .l: :ノ /二―-、 |: ::ノ.. | //  ̄7/ /::ノ 属性Z . 〉(_二─-┘{/ /、//|  ̄ ̄ヽ わかんないかなコレ・・・
496 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:14:39 ] class X { method( Y ) {} } class Y { Z z; } class Z {}
497 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:38:27 ] \ i / ─── ・ ── ← ヌッケ  ̄ 二─ _ // | \  ̄ 、 - 、 / / | -、\ \ / / \\ \ / \ヾ ヽ ヽ / \ ヾ、 | i クマソッ // |! `i | /// | | / ( | | <_,へ 丶-、 | | __●_ rm \ \ |! リ | / ヽ-'⊇) ̄`ヾ │ / | | ⊂/ ● /\_,.-、 / / / / │ /\ / _/ / / // ⊂丿 ミ (⌒)  ̄ / / / \__ミ / / //_ / \_/ _二─
498 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:39:35 ] A → B → C H ↓ ↑ ↑ ↓ D E → F → J ↑ ↑ G H → I くまー r -、,, - 、 __ ヽ/ ヽ__ くまー ,"- `ヽ, / ● l ) / ● \__ (● ● i" __/ ●)  ̄ )"__ "`; .(_i ● ' __, '"  ̄`'(___/.i⌒i 丶_ ,i⌒i,,_(_/ ● i ̄ ̄ )_|__ __, '"  ̄ ヽ! ● ●) ミ~ ̄_● ヽ) くまー (_/ ● i ∪ / ⊂{● | くまー l ●( _●) (  ̄)- / -' i /ヽ、 |∪l T i ● '") くまー
499 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:43:17 ] i⌒i⌒i | ヽ / 人__ヽ∩ / / ヽ >>498 のように人間は人間同士いろんな関係をもってるクマ / / ● ● | 物事だってそうだクマ ( | ( _●_) ミ コレとかアレのいろんな関係で成り立っているクマ \ 彡、 |∪| ( \ ヽノ `ー´⌒\ \ /\ \、 \ / (  ̄) \ | ( ̄ ̄ ̄ ̄) \ ヽ/ / ̄ ̄ \__/
500 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:48:31 ] ∩___∩ / ノ \ ヽ | ● ● | 彡 (_●_) ミ /、 |∪| ,\ 複数の「対象」と複数の「射」の集まり , -‐- くJ( ヽノ ゝ-rr- 、、 ~~~~~~ ~~~~~ /Y ,r 、 `ー r'"^〃 、 つヒヽ これこそが「圏」 = 「カテゴリー」 ,ノ '^` i! =テミ i' 天ニ ミ、 ='"^ヾ } ,/ ''=''" ノ-‐'ヾ-人,,__ノnm、''::;;,, イ i! ,∠-―-、、 `ー'フヾ、 j 圏論(カテゴリー論)の基礎となるものだクマ f'´ ノし `丶、 ー=ミ-JE=- / ヾ=ニ- 彡^ 〃 ,,>、、`''ー-::,,_,,ノ ``ー--┬:, ''"~´フ ソ´`7'' ''"´ ,に (`゙゙´ノ f^ヽ ,ハ ,ィ' ,;-ゝ、 /ミ`ーt!,_,ィ-‐彡''"^ヽ / ヾ::::::::::::::::r''" ぃ ;} l t:::::::::::/ ノ / l! `'T7′ / /
501 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 05:06:35 ] 圏(カテゴリー) ┏━━━━━━━━━━━━━━━━━━━━━┓ ┃クマー クマー クマー ┃ ┃~~~~~~ ~~~~~~ ~~~~~~ ┃ ┃ ↑[神] ↑[神] ↑[神] ┃ ┃ [好き] [好き] . ┃ ┃ A君 → Bちゃん → . C君 ┃ ┃ ~~~~ ~~~~~~~~ ~~~~~ . . ┃ ┃ ↑[好き] ↓[爆破] ┃ ┃ . . [保有] ┃ ┃ . . D君 → フェラーリ ┃ ┃ ~~~~ ~~~~~~~~~~ ┃ ┃ ↓[ペット] . .┃ ┃ [同類] . .┃ ┃ヌッケ ← 犬 .┃ ┃~~~~~~ ~~~ . ┃ ┗━━━━━━━━━━━━━━━━━━━━━┛
502 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 05:16:08 ] 【まとめ】 ┏━┓ 射 ┏━┓ ┃.A.┃ → ┃.B.┃ ┗━┛ ┗━┛ 対象 対象 (ドメイン) (コドメイン) 上の図が基本要素 これが複数あつまり関係しあったものを圏という
503 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 05:20:23 ] ふぅ、つかれたクマー ∩___∩ | ノ ヽ ( ) / ● ● | ( ) __| ( _●_) ミ__ ( ) (_. 彡、 |∪| 、`__ )─┛ / / ヽ ヽノ /_/:::::/ |::::::::::| / ( ̄ ̄ ̄ヽ |:::::::| ̄ |::::::::::| |  ̄ ̄ヽ .ノ |:::::::| / / ̄ ̄旦 ̄ ̄ ̄ ̄ ̄ ̄ ̄/|/ /__________/ | | | |-------------------| |
504 名前:デフォルトの名無しさん [2007/02/25(日) 09:49:35 ] これは分かりやすいw
505 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 12:04:29 ] GJ!!
506 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 08:23:38 ] >>502 それがちょっと違う。 たとえば A → B → C という2つの射があったときに ここでA → Cという上の2つの射の*合成*が定義されてなかったら圏にならない。 すべてのコドメインとドメインが一致する射の組について合成が定義される 場合について、その全体を圏と呼ぶことが出来る。 ↑のAAもがんばってくれw
507 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 19:20:21 ] オーム社から「クマでわかる圏論」マダー?
508 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:59:49 ] >>506 あー、なるほどね。そういう条件が必要だったのか。 Wikipediaのこの文章をみてちょっと理解しきれなかったんだな。 >圏 C についてその射(と射の合成可能性)だけでも全部わかっていれば、 >そのうちで恒等射になっているものが対象を示しているので著者によっては >上の公理を満たす射の集まりを持って圏と定義することもある。 恒等射ってのがなんなのかわからん。ググっても出てこないし! >>507 クマーとかを本に使って金もらうと炎上しそうだなw
509 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 02:24:05 ] クマーはGPLってことで
510 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 03:06:50 ] >>508 恒等射っていうのはドメインとコドメインが等しくて、 何回合成してもそれ自身と等しくなるような射。 圏のすべての対象について、一個ずつ恒等射があること が必要。逆に言うと、恒等射があるとそれに対応する 対象がちょうどひとつあるので、恒等射と対象は 1対1に対応している。(したがって、人によっては、恒等射を 対象そのものとみなすって言うのが↑の記事、、
511 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 03:15:03 ] >>510 冪等射と恒等射は別じゃないか?
512 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 04:11:06 ] あ、そうだわ、・・・集合の圏とかだと冪等射がたくさん・・・orz... だから、上の条件にプラスして、他の任意の合成可能な射 と合成して相手を変化させないという条件も必要。 ちゃんと書くと、 1:A→Aという射で他の任意の射 f:A→Bと合成して、f1=f g:C→Aと合成して、1g=g となるようなもの、・・・
513 名前:デフォルトの名無しさん [2007/03/18(日) 18:43:55 ] 臨時あげ
514 名前:デフォルトの名無しさん [2007/03/18(日) 18:46:41 ] ここで、Stringableの是非を議論すればいいのか?
515 名前:デフォルトの名無しさん [2007/03/18(日) 18:47:12 ] 馬鹿が本スレ埋めやがったな
516 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 18:47:46 ] 止めれw 次スレが立つまでの避難所ということで
517 名前:デフォルトの名無しさん [2007/03/18(日) 18:54:27 ] よく読むとアンチスレなのにまともな議論されてるなw
518 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 19:01:05 ] pc11.2ch.net/test/read.cgi/tech/1174211797/ 立てた。
519 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 19:07:59 ] >518 乙!
520 名前:デフォルトの名無しさん [2007/03/25(日) 15:03:44 ] 型が充実してるって言うから、ちょっと勉強してみたけど、 簡単に実行時例外が発生するじゃん。なんだよこれ。 コンパイルが通れば論理的な誤り以外、 ほとんどバグが取れてるのかと思ったのに。 実行時に読み込むデータとかの誤りなら仕方ないにしても、 そんなのない静的にすべて決まってるプログラムでも 実行時例外が起きえるなんて、全然だめじゃんwww
521 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 19:04:34 ] >>520 ボトムのことかな?
522 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:12:50 ] >>520 例外を起こす可能性のある関数を使わなきゃいいんじゃない? あるいは、もっと型の強い言語を使ったらどうよ。
523 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:53:28 ] 暗黙でも何でも良いから 関数毎の定義域に合ったサブタイプを作るとか、 なんとかならんのかね。 もっと型の強い言語ってどんなの?
524 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 01:54:12 ] Cじゃね。
525 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:33:01 ] Cほど型の緩い言語もないだろ。
526 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:43:07 ] Cは緩いけど硬直的
527 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:44:20 ] Dじゃね。
528 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:44:47 ] void*
529 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 23:35:13 ] 日本拳法が一番厳格だと思うよ
530 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 20:05:02 ] あんまり深く使い込んだわけじゃないけど 俺が出会ったランタイムエラーは パターンマッチの場合分けの漏ればかりだった。 型がらみで実行時エラーってでる可能性はあるの?
531 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 20:40:55 ] >>523 >もっと型の強い言語ってどんなの? 依存型のある言語とかじゃないか?実用化されてるのか知らんけど。 >>530 head []とかdiv 1 0とか。
532 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 20:45:02 ] 計算停止性を決定可能にした天才の>>520 がいると聞いて飛んできましたよ。
533 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 21:19:17 ] 依存型って型に普通の値を突っ込めるようなもの? とすると類に普通の型が混ざるわけ?
534 名前:530 mailto:sage [2007/03/27(火) 21:26:28 ] >head []とかdiv 1 0とか。 div 1 0は型エラーじゃないじゃん。 head []も型システムの責任なのかい? そうか 型に値域を限定する機能があればいいのか? div :: (Num a) (Num b:ただし0を除く) => a -> b -> a head :: [a] ただし[]を除く みたいな。 でもどうやっても静的にはチェックできそうにない orz
535 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 21:59:15 ] {-# OPTIONS_GHC -fglasgow-exts #-} data ZeroT = ZeroT data SuccT a = SuccT data Nat n where Zero :: Nat ZeroT Succ :: Nat n -> Nat (SuccT n) data List a n where Nil :: List a ZeroT Cons :: a -> List a n -> List a (SuccT n) myhead :: List a (SuccT n) -> a myhead (Cons x xs) = x mydiv :: Nat n -> Nat (Succ m) -> {- ...型が書けねえ -}
536 名前:保守 mailto:sage [2007/05/26(土) 18:36:56 ] 破壊的代入を使ったら負けかなと思う
537 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:43:18 ] 勝ち負けを意識した時点で既にアンタ負けてるよ
538 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:19:22 ] >…負けてるよ って言ってるアンタも勝ち負けを意識してるんだから、負けてるよ。
539 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:32:17 ] 俺みたいな奴は勝つ必要なんてねえんだよ
540 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:02:25 ] 勝とうよ。haskellがあれば勝てるよ
541 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 00:08:21 ] けどHaskellって正直なところ負け組だよ
542 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 02:59:58 ] 関数型言語パスカル
543 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 03:24:30 ] >>543
544 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 03:25:27 ] >>544
545 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:16:38 ] ふつケル読んだけど、後半が理解できなかった。マジで難しい。 言語の設計の根っこがCPUの挙動にぜんぜん当てはめられていないからか、 俺には宇宙語だよこりゃ…。
546 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:36:33 ] 当てはめられないかもしれないが C言語もCPUの挙動に当てはめられるかというとそうでもない そもそもソフトウェア設計用だからな
547 名前:偉そうに語ってみる mailto:sage [2007/08/23(木) 01:19:28 ] >545 後半、モナドやWikiエンジンの開発のところは急に難易度が上がっているので、 それより前の部分を何度も読んで動かしていると感じがつかめてくると思います。 あとは、メモリとかスタックとか、効率のことを考えるのをひとまずやめて プログラムでどういうことをやりたいかを考えてみるのはどうでしょうか。
548 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 02:46:56 ] おまえ偉そうだぞ
549 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 01:14:22 ] えっへん