タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

boostに関するoto-oto-otoのブックマーク (4)

  • 簡易 lambda 記法 - bind を用いない部分評価・関数合成,っていうか bind 嫌い嫌いだいっきらいっ! - Cry's Blog

    昔っからずっと思っておりましたんですが,ばいんどきらい. bind( plus, _1, 1 );ほらもうきらいきらいだいっきらい.ばいんどしんぢゃえ. plus( _1, 1 );こう書きたい.めがっさ可読性上昇.ほら,こんな書き方ができたら,あなたも今日から初めてみようお手軽 部分評価 plus( _1, 42 );& カリー化 plus( 42, _1 )( boost::cref( 42 ) );& 関数合成 plus( plus( _1, 42 ), 42 );& flip plus( _2, _1 );みたいに思いません?え?思わない?しょぼーん. で,こうするためにわざわざ普通の関数定義とラムダ対応の関数定義を分けて書くのか?当然 No. 普通の関数としての役割とラムダとしての役割を2重に担う形の関数オブジェクトが当然欲しい. plus( 2, 3 ); // -> 普通に

    簡易 lambda 記法 - bind を用いない部分評価・関数合成,っていうか bind 嫌い嫌いだいっきらいっ! - Cry's Blog
  • おびなたのはてな日記 - C++テンプレートは計算完備

    KEMURIをチューリング完全にするためにはどうしたらいいか、あるいはどうすればチューリング完全性を判定できるのか、ヒントを探していたら「C++テンプレートはチューリング完全だよー」という論文にたどり着いた。 C++ Templates are Turing Complete(PDF) Boost::MPL みたいなものが実現できるあたり、その可能性は感じていたけどやっぱりか!!但し、チューリング完全だと、いわゆる「チューリング機械の停止判定問題」があるわけで、C++はその問題を避けるために、言語仕様では最低17回の再帰までしか保証しないことにしている。なので、厳密にはチューリング完全ではないところ、これを無制限と仮定しているのがミソ。そして、テンプレートがチューリング完全ならば、(テンプレートを使った)C++プログラムはコンパイルできるかどうか判定する事が一般的にできなくなる*1。 昨年

    おびなたのはてな日記 - C++テンプレートは計算完備
  • 2006-09-27

    コード書く。 なんかやろうとして飽きた↓ http://morihyphen.hp.infoseek.co.jp/files/sexpr-spirit.tar.gz 飽きたのを置いとくというのもアレなんだけど… まあ、つまり、boost::spiritすばらしいです。というような。 integer = int_p[ integer.val = construct_<TaggedVal>(arg1) ]; symbol = (+(alpha_p | ch_p('-') | ch_p('_')))[ symbol.val = phoenix::bind(&symval)(arg1,arg2) ]; list_elem = (sexp[list_elem.val = arg1] >> list_elem[list_elem.val = construct_<TaggedVal>(list_ele

    2006-09-27
  • λx.(x+1) - d.y.d.

    19:52 06/03/30 反応とか Schemeのマクロは 自分も好きなので、人間コンパイラコンパイラ的に楽しいっていうのは同意です。 ただ、マクロはともかく言語自体が、「なんでもS式」と「型宣言がない」のコンボのおかげな 気がするのですが、Schemeで書いてるとどうもコードが10KB越える辺りで自分の頭の把握能力が 追っつかなくなってしまうもので、最近は敬遠してました。 これは経験と修行でなんとかなるような気がするのでなんとかしたいなーと思い中です。 頑張るます。 テンプレートの型検査は、最低限、実行される可能性のあるinstanceにはコンパイル時にC++の型検査が入るので、 まあなんとか…。そもそもマクロやアセンブリではせいぜいパラメタ多相もどき までしかできなくて別の意味で困るような。module typeもどきになるとPOPL06のアレや例によってそのテンプレートでの実現(

  • 1