2006-06-08から1日間の記事一覧

脱オブジェクト指向のススメについて

http://blogs.itmedia.co.jp/tamaki/2006/06/post_57ab.html よくある話。争点は「役に立つ」の設定だろうか。誰にいつどういう役に立つか考えるべき。オブジェクト指向の概念は、記号分けや構築方法の枠組みを提供しているもののひとつだ。だから、オブジェ…

論理シフト

id:bellbind:20060603:1149366839で、問題の箇所は二分探索での中間位置を求めるコード mid = (low + high) / 2;がオーバーフローするのが問題で、解決方法として mid = low + (high - low) / 2; や mid = (low + hight) >>> 1; があがっている。前者は意味…

Parsecで演算子を自己定義できる文法のパーズ

メモ programParser :: GenParser Char OpTable (CodeTree, OpTable) ... case (runParser programParser initOpTable codename code) of Right (codeTree, opTable) -> ...演算子は関数へのマッピングにするとして、取れる選択肢は、 固定演算子/モジュール…

リスト処理例

[(10, "a"), (9, "b"), (10, "c"), (8, "d")]のようなリストがあって [["d"], ["b"], ["a", "c"]]を返したい。この変換をする関数は? func list = groupBy priEq $ sortBy priComp list where priEq c1 c2 = (fst c1) == (fst c2) priComp c1 c2 = compare …