タグ

2015年11月12日のブックマーク (6件)

  • (Coyoneda編) 型引数の基本から学ぶ、FreeモナドとCoyoneda - AweKuit日記

    前おき この記事は型引数の基から学ぶ、FreeモナドとCoyonedaの続きです。今回はCoyonedaを題材にしつつ、引き続き『Scalaで型を扱うのがちょっとこわい』方の資料となるべくScalaのプログラミングの基にたっぷり触れていきます。 前回のおさらいをしておくと、我々はFreeモナドという「mapさえできればflatMapが出来るようになる」もののうわさを聞き、ひとまずflatMapのところを全部mapに置き換えるHKFoldを作ってみたら、それが実はFreeモナドだった事を知った所です! なんてこった! まだ読んでない方はそちらを先に、すでに読んだけどだいぶ忘れてきた方もなんとなくそちらをチラッと読み返して頂きつつ、では、続きをどうぞ! Coyonedaのうわさ mapでflatMapの代わりを担わせたらいつのまにかFreeモナドを作っていた事に気づいたあなた。 ゴキゲンで

    (Coyoneda編) 型引数の基本から学ぶ、FreeモナドとCoyoneda - AweKuit日記
  • 型引数の基本から学ぶ、FreeモナドとCoyoneda - AweKuit日記

    このエントリはScalaアドベントカレンダーの3日目です。昨日は Kuchitama さんのScalaがつないでくれた縁-NetflixMeetup Kyoto 開催後記- でした。 前おき この記事は、タイトル通りFreeモナドとCoyonedaを扱うものの、あまりそれらの直接的な話やモナモナした話ではなく、そこに至るまでの実装のあれこれを『Scalaのプログラミングとして』手探りで追ってみよう、というものです。 その過程で、特に型引数(型変数)や高階型や、それらが継承時にどう扱えるかというあたりのScalaの基にたっぷり触れます。 なので、Freeモナドに興味がない方でも 型引数で A とか F[_] とか出てくると、まだちょっとこわい Scalaでいざプログラミングすると型が合わずつまづく事が多い という方にも、役に立つ部分があると思うので参考にぜひ読んでみてもらいたいです。 もち

    型引数の基本から学ぶ、FreeモナドとCoyoneda - AweKuit日記
  • FreeモナドとTagless FinalによるDependency InjectionのためのDSL - Qiita

    前回の記事では、ReaderモナドやFreeモナドを使ってDependency Injectionを行うための小さなDSLを組み立てた。今回の記事では、まず前回組み立てたDSLの課題であるExpression Problemと、それを解決するための機能Injectと、さらにはTagless Finalを用いたDSLについて述べる。 この記事は前回の記事の知識を前提としているので、分からない言葉などがある場合はまず前回の記事を参照して欲しい。また、文章について不明なことや意図が分かりにくい部分があれば気軽に指摘して欲しい。 注意: 記事の中にあるコードは読みやすさのためにimportなどを省略しているので、このままでは動かない。動かしたい方はGithubのリポジトリを使うとよい。 Expression Problem Expression Problemとは、こちらのサイトを引用すると次のよ

    FreeモナドとTagless FinalによるDependency InjectionのためのDSL - Qiita
  • MonoidもMonadもモノイドだって話 - Pixel Pedals of Tomakomai

    わかめのモナド浸しと第6回 スタートHaskell2で「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」という話をしてきた。スライドは以下。 モナモナ言うモナド入門 *1 モナモナ言うモナド入門.tar.gz .tar.gz の方はHaskellでの説明だったので、検証用コードも書いてみてgistに上げてる。QuickCheckとか使わずに値一個与えてみてるだけだけど、型が通ることくらいは確認できるかと。以下、検証用コードについて解説する。 MonoidはHaskの圏のモノイド まず、Monoidの方。図式はスライドを見てもらうとして、ソースは以下。満たすべきは各図式の時計回りと半時計回りが等しいことであり、具体的には、モノイドであれば clockwiseX == anticlockwiseX である必要があるという意味である。 assoc :: ((a, b), c)

    MonoidもMonadもモノイドだって話 - Pixel Pedals of Tomakomai
  • Yoneda lemmaとOperational Monad - Just $ A sandbox

    最近Haskellerの間で人気になりつつある(?)Operational Monadというものについての記事です。 サンプルプログラム Operational Monadは http://hackage.haskell.org/package/free-operational で定義されています。後でも説明しますがこれはFree Monadの構造をもったモナドになります。 以下のコードはhttps://gist.github.com/myuon/5737483に載せておきました。 {-# LANGUAGE GADTs #-} import Control.Monad import Control.Monad.Operational.Simple data Simple a where End :: Simple a Put :: String -> Simple () Get :: In

  • モナド、あるいは自己関手の圏におけるモノイド対象について - Nao Minami's Blog

    どうもこんばんは、south37です。 今日は久々にHaskellネタをぶっ込んで行きたいと思います。題材は、Haskellを知っていれば嫌でもその名を耳にするであろう「モナド」についてです。 そもそもモナドって何なんですか? はい、何なんでしょう?ここで、フィリップ・ワドラーの言葉を引用してみます。 モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも? うん、何だかよく分かりませんが超絶カッコいいですね!!こーゆうのサラッと言えたらいいですね!!! で、結局何なんですか? ワドラーの言葉は専門用語を使って簡潔にまとめられていた為、ベースとなる知識が無い状態では全く意味が分かりませんでした。まずは、ワドラーの言葉に出てきた単語の意味を一つ一つ見て行く事にしましょう。 自己関手 最初のキーワードは 自己関手 です。そのまま読むと、「自己」の「関手」です。はて? 関手(Funct

    モナド、あるいは自己関手の圏におけるモノイド対象について - Nao Minami's Blog