タグ

2014年5月4日のブックマーク (4件)

  • guard の動作原理を考える - あどけない話

    「リストモナドの動作原理を考える」の続きで、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)

    guard の動作原理を考える - あどけない話
    todesking
    todesking 2014/05/04
  • HaskellのdoとScalaのfor式とEitherとMonadPlus - xuwei-k's blog

    標題の通り、色々書きたいことあって長くなってわかりにくくなりそうですが、頑張って書いてみます。なお、(2.8や2.9でもほぼ同じだと思いますが)Scalaのversionは2.10.1です。Haskellはghc7.4.2です。 「for文は7つしか使っていません(ドヤッ」という謎の主張を含んだスライドが最近流行っていましたが、まずScalaのfor式はMonadのための構文というのはお馴染みですよね!!! Monadそのものから説明していたらとても長くなってしまうので、そのあたりの説明は飛ばします。Scalaのfor式は、コンパイル時に内部的に以下のメソッドの組み合わせに変換されます map foreach flatMap filter withFilter なので、上記の5つのメソッド名は、予約語ではないですが、for式に変換されるという点において特別です。 for式を「Monadの

    HaskellのdoとScalaのfor式とEitherとMonadPlus - xuwei-k's blog
    todesking
    todesking 2014/05/04
  • #カモギー 「カーモギー」 - 一号(水町 綜)の小説 - pixiv

    「やぁ、じつにいい天気だ! 今日は当に晴れてよかったですなぁ!」 さんさんと照り付ける太陽の真下で、吉田は背筋を伸ばす。 そのぱんぱんに張り詰めた彼の背中がふるふると収縮するなんとも言えない様子を、大島は無言で眺めていた。 休日の河川敷は午前中といえど、それなりに人気がある。 ...

    #カモギー 「カーモギー」 - 一号(水町 綜)の小説 - pixiv
    todesking
    todesking 2014/05/04
  • Leiningen

    Leiningen for automating Clojure projects without setting your hair on fire Leiningen is the easiest way to use Clojure. With a focus on project automation and declarative configuration, it gets out of your way and lets you focus on your code. (defproject leiningen.org "1.0.0" :description "Generate static HTML for https://leiningen.org" :dependencies [[enlive "1.0.1"] [cheshire "4.0.0"] [org.mark

    todesking
    todesking 2014/05/04
    最高のマスコットキャラだ