This domain may be for sale!
「リストモナドの動作原理を考える」の続きで、guard の動作原理を考えてみます。 guard は、リスト内包表記では、こんな感じに書けます。 [x | x <- [1,2], x < 2] → [1] これを do で書き直すと、こうなります。 do x <- [1,2] guard (x < 2) return x guard の定義は、Contorol.Monad の中にあって、こういう風になっています。 guard :: (MonadPlus m) => Bool -> m () guard True = return () guard False = mzero 僕には return () が何を意味するのか、さっぱり分かりませんでした。 do から >>= へ変形 上記の do を >>= へ変形するとこうなります。 [1,2] >>= (\x -> guard (x < 2)
この記事には参考文献や外部リンクの一覧が含まれていますが、脚注によって参照されておらず、情報源が不明瞭です。脚注を導入して、記事の信頼性向上にご協力ください。(2023年3月) 三角数(さんかくすう、英: triangular number)とは、多角数の一種で、点を正三角形の形に並べていったときの点の総数のことである。n番目の三角数は 1 から n までの自然数の和に等しい。 定義と例[編集] 一辺に n 個の正三角形となるように点を等間隔に並べたときの点の総数は1 から n までの自然数の和に等しくなり、 と表される。 これを n番目の三角数といい、Tn で表す。三角数は無数にあり、最小のものは 1 である。 例えば 10 は一辺に点を4個並べたときに該当するので三角数の一つである。 1 3 6 10 15 21 特に三角数 10 (= 1 + 2 + 3 + 4) はピタゴラス(学派
1 2012.11.18 2 1 3 2 DSL 4 5 Q) A) 6 Q) A) 7 8 9 Haskell 10 11 Parser data Parser a = Parser (String -> [(a,String)]) Parser pwrap :: a -> Parser a pwrap v = Parser $ \inp -> [(v,inp)] Parser pbind :: Parser a -> (a -> Parser b) -> Parser b pbind p f = ... string :: String -> Parser String string [] = pwrap [] string (x:xs) = char x ‘pbind‘ \v -> string xs ‘pbind‘ \vs -> pwrap (v:vs) 12 IO data IO
1 Monoid 2012.11.18 2 (a b) c = a (b c) Monoid (a b) c = a (b c) e a = a e = a (a b) c = a (b c) e a = a e = a a a-1 = e Semi ring fusion 3 Q) Monoid A) 1 Monoid 4 Monoid doctest data Summary = Summary { sExamples :: Int , sTried :: Int , sErrors :: Int , sFailures :: Int } deriving Eq instance Monoid Summary where mempty = Summary 0 0 0 0 (Summary x1 x2 x3 x4) ‘mappend‘ (Summary y1 y2 y3 y4) = Su
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く