タグ

ブックマーク / melpon.hatenadiary.org (3)

  • Data.Aeson が便利すぎる件 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    JSON を扱うライブラリで一番簡単に見つかるのは Text.JSON ですが、しばらく使ってると、あまりの使いにくさに発狂しそうでした。 ということで他のを探した結果、Data.Aeson というのがかなりよさげだったので、これを使うことにしました。 しばらく使ってみた感じかなり良かったので、いくつか代表的な使い方を書いてみます。 インストール aeson ではなく、aeson-native を入れて下さい。 cabal install aeson-native import それぞれのコードは、これらの import (と LANGUAGE プラグマ)が先頭にあると思ってください。 {-# LANGUAGE OverloadedStrings #-} import Control.Applicative (Applicative,pure,(<$>),(<*>)) import Con

    Data.Aeson が便利すぎる件 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • ポイントフリースタイル入門 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    Haskell にはポイントフリースタイルというのがあります。 例えば foo x = f (g x) という中の x というのが「ポイント」と言うらしいです(型を明示していないから x の型が a->b だったりする可能性もあるけどその可能性は置いといて)。要するに値のことですね。 で、このポイントを除けてプログラミングするのをポイントフリースタイルと言います。 この場合、 foo = f.g となります。 ということで、ありとあらゆるコードをポイントフリースタイルで書けるように訓練しましょう。 基的に、書いてれば慣れるのでどんどん書きましょう。 基的に (.) 関数を使います。 foo x = f (g x) foo x = (f.g) x foo = f.g です。 また、(.) は二項演算子なので、これを関数形式で書けば、 f.g = (.) f g となり、更に = (

    ポイントフリースタイル入門 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • C++03 と C++11 の互換性 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    C++03 と C++11 ってどれぐらい互換性があるのかなーと気になっていたんだけど、仕様書の §C.2 を見てみたらずばりなものが載っていたので、一通り読んでみた。 C++03 のコードを C++11 として動かそうとしたときにコンパイルエラーやランタイムエラーが発生したら、これを確認してみるといいかも。 新しい文字列リテラル R, u8, u8R, u, uR, U, UR, LR という新しい文字列リテラルが追加されたため、文字列と一緒にこれらのマクロを使った場合、互換性の無いコードになる可能性がある。 例えば以下のコードは互換性の無いコードである。 #define u8 "abc" const char* s = u8"def"; // C++03 なら "abcdef"、C++11 なら "def" になる ユーザはこの手の短いマクロをよく使うため、この問題はよく発生しそうに見

    C++03 と C++11 の互換性 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • 1