タグ

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

  • Haskellの壁 - think and error

    この記事はHaskell Advent Calendarのために書いたものです。 先ずは自己紹介でも。 大学の専門は機械でした。制御システム工学。まあ情報(工学|科学)科ではないということです。仕事で使っている言語はPHP。実用主義的な言語ですね。Haskellとは正反対です。 Haskellは私的に使うために習得しているところ。出来ればHaskellでプロトタイプ作成くらいはさくっと出来るようにはしたい。 ホーム言語というか得意な言語とかあるといいよなあー、とか思いつつ大学生協でRWHを立ち読みし、よしこれにしようと思い立ったのがHaskellはじめだったかな。 ポリシーが明快なものは良いですね。PerlとかRubyとかPythonとか結構好きです。PHPとか好きではない。最近はClojureなんかも結構いいなあ、などと思っていたり。 それはともかく、このHaskell習得時期にAdve

    Haskellの壁 - think and error
  • 函数型なんたらの集い2014でモナドについて話してきた - think and error

    函数型なんたらの集い 2014 in Tokyo - connpass 最近私的にモナドが非常に熱いのでそれについて話してきました。 しかし資料としては要改善点が多いですね... 図入れるとか具体的なコード入れるとか色々出来たのですけど。 Engineer-uses-monads from Ruicc Rail 例 具体例をスライドに入れられなかったため、trivialな例を示す。 おおまかな雰囲気は感じられると思う。 明記してないけど、純粋関数は任意のモナド内でモナドとは関係なく使えます。 -- Derivingに必要 {-# LANGUAGE GeneralizedNewtypeDeriving #-} import Control.Applicative (Applicative) import Control.Monad.IO.Class (liftIO, MonadIO) imp

    函数型なんたらの集い2014でモナドについて話してきた - 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
  • 続・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
  • dataToExpQ - think and error

    Haskell Advent Calendar 2012二日目です。 一日目から飛ばしてきましたね。負けずに頑張らなければなりませんね。 QuasiQuotes書くときにdataToExpQ便利ですよね。 便利だけどこんさんが何言っているかわかんねえ!という人向けの記事です。 間違ってたらツッコミください。 (以下ではGHC7.4.1を用いています) 何故QuasiQuotesなのか 僕らエンジニアが扱うものは基何らかのシンタックスに則って書かれています。 つまりHaskellerはConfigファイルやSQL文字列、もしくはある言語ファイルなどを目の前にして、 「このファイルパーズして"Haskellのデータ構造"として欲しいなあ」とつぶやく訳です。 文字列から値生成ならまだランタイムに出来ますが、型の生成や型クラスの生成などとなるとコンパイルタイムにやるしかありません。 というわけで

    dataToExpQ - think and error
  • 1