タグ

ブックマーク / ruicc.hatenablog.jp (6)

  • yesodとcabal sandbox - think and error

    2015-07-03追記: 現在yesodを使いたい場合は、stackを導入するのが適切だと思います。 https://github.com/commercialhaskell/stack cabal-install-1.18からsandbox機能が付き便利になったわけだが、いまいちyesodでsandbox機能をスマートに使う方法が見つからなかったのでメモ(というエントリを書いてからその方法が見つかると言うね。まあいいのだけど)。 なおGHC7.6.3, yesod-platform-1.2.7.1を前提としている。 どうでもいいがyesod-platform-1.2.6はyesod-bin-1.2.6で生成したファイル群で使えない悲しさがあった。そこバージョン合わせている訳じゃないのか。 yesod-platfromとは複雑な依存関係を持つyesodにおいてcabal-hellを回避す

    yesodとcabal sandbox - think and error
  • SetはFunctorである - think and error

    Haskell Advent Calendar 2013 9日目です。 概要 SetはFunctor。 Categorical Programming for Data Types with Restricted Parametricity rmonad: Restricted monad library なぜSetはFunctorになっていないのか Setを要素が重複しないデータ構造とします。Setはその性質のため、要素には比較出来ることが要求されます。Haskellで言うとEq制約です。まあ来重複しないことだけを要求するならEq制約だけでいいはずですが、SetがOrd制約を要求しているのは効率の良い実装にするためでしょう。containersパッケージのData.Setはバランス二分木で実装されています。 来SetはFunctorにすることが出来るはずです。しかし現状(GHC7.6

    SetはFunctorである - think and error
  • モナドが比喩で表せないことをわかりやすく説明したいモナドチュートリアル補足 - think and error

    厄介なのはjoinだ。joinは以下のような型を持つ。 join :: Monad m => m (m a) -> m a 読み下してみよう。「joinは、二重にネストしたモナド(m (m a))をとり、一つに潰して返す(m a)」。 モナドとは、このjoinによって決まる。 モナドの定義でreturn, (>>=)の対がよく出てくるが、(>>=)の代わりにjoinを使ってもいい。 (>>=)のjoinを用いた定義は以下だ。 (>>=) :: Monad m => m a -> (a -> m b) -> m b m >>= f = join $ fmap f m これも読んでみよう。「bind(>>=)は、(fmap f m)で生成されたネストされたモナド(m (m b))を、joinで潰した結果を返す」 つまりモナドの性質とは、このjoinの、モナドの潰し方によって決まる。 つまりモナ

    モナドが比喩で表せないことをわかりやすく説明したいモナドチュートリアル補足 - think and error
  • オブジェクト指向から理解する型クラス - think and error

    Haskell Advent Calendar2011 2日目です。 もう42時になってしまいました...さすがに遅いですね。 Haskellと言えば型クラス オブジェクト指向のクラスとHaskellの型クラスは違いますよ的な説明は見ますがどう違うか比べた情報が無い オブジェクト指向知っている人からの理解を簡単にすればHaskell理解する人が増えますね! という目論見の元にスライドを作りましたが、ユーザ視点が足りずに混乱させてしまったかも知れません。 Programming haskell chapter10 View more presentations from Ruicc Rail Haskell Advent Calendar明日はid:melponさんです。

    オブジェクト指向から理解する型クラス - think and error
  • 続・Template Haskell入門 -- QuasiQuotes編 - think and error

    先にこちらをどうぞ。Template Haskell入門 - think and error QuasiQuotesで簡単なものを作りましょう。 ここではヒアドキュメントを作ろうと思います。Haskellにはヒアドキュメントがないですから。 参考: こんさんのあれ:準クォートでもてかわゆるふわメタプログラミング! - はてな使ったら負けだと思っている deriving Haskell - haskell TemplateHaskellのあれ 前提: GHC7.2.1 そもそもTemplateHaskellで何が出来るのか 「既知の情報」と「ルール」をもとにHaskellのコードを生成するわけですね。 Haskellのコードで直接実現出来ないことや、似たようなコードを大量に書きたい時など便利そうです。 例えば可変引数関数(QuasiQuotesの例としてprintfが挙げられていますね)や、

    続・Template Haskell入門 -- QuasiQuotes編 - think and error
  • Template Haskell入門 - think and error

    Template Haskell(以下TH)超入門です。 まあ入門するのは僕ですが。 Haskellの易しいエントリがあまり見あたらないため、僕が書いていくことにしようとか考えたり。 続き よかったらこちらもどうぞ。 続・Template Haskell入門 -- QuasiQuotes編 - think and error 前提 GHC7.0.2で。 GHC7.0.1からQuasiQuotesの記法が一部変更したようです。 ..と下書きを書いて既に数ヶ月が経とうとしています。 実はこの記事はHIMA' #6に参加したことをきっかけとして書いています。 partake.in 7/24(Sun)にはスタートHaskellが開かれます! http://atnd.org/events/17468 ....それも終わって既に2ヶ月経ってますね。やる気ないですね僕。 しかしHaskellは熱いですね

    Template Haskell入門 - think and error
  • 1