2010-02-01から1ヶ月間の記事一覧

ブロック構文はクロージャーか否か

typedef int (^hoge_t)(void); hoge_t makeAc(int start){ __block int _start = start; return = ^{ return _start++; }; } ってやったら、ローカルスタックのブロック返そうとするんじゃねーゴラァ!って怒られたお。ふざけんじゃねぇゴラァとおもって、 t…

GCD

Ground Central Dispatch(GCD)をちょろっと勉強してみた。GCDはMac OSX10.6から搭載された、C言語等でちょー簡単に並列プログラミングをするための仕組み。おもに二つの機能から成る。 Blocks構文(https://developer.apple.com/mac/library/documentation/Co…

C言語で関数型プログラミング

クロージャーが使える事が分かったので、関数型言語のよくある例題の無限列をやってみよう。 #include <Block.h> typedef struct _cons_t{ int car; void* cdr; } cons_t; typedef cons_t (^cdr_t)(cons_t cons); int car(cons_t c){ return c.car; } cons_t cdr(cons</block.h>…

謎はすべて解決した!

Block_copyってAPIを使えばクロージャー的な事がC言語でもできるらしい(ただしMacに限る)。 #include <Block.h> typedef int (^hoge_t)(void); hoge_t makeAc(int start){ __block int _start = start; return Block_copy(^{ return _start++; }); } int main(){ hoge</block.h>…

メモ

大学生が学部4年間の中でやり始めるべき、たった1つのこと。それは、楽器。音楽。 正確に言えば、「音楽をやるという習慣」 そりゃあ、個別に言えばなんでもある。勉学に励む。恋人を作る。友達と無茶なことをする。英語を習得する。etc,etc――最近は「プロ…

立ってるビットを数えるアルゴリズム

int bitCount(uint32 n) { n = ((n>>1) & 0x55555555) + (n & 0x55555555); n = ((n>>2) & 0x33333333) + (n & 0x33333333); n = ((n>>4) & 0x0f0f0f0f) + (n & 0x0f0f0f0f); n = ((n>>8) & 0x00ff00ff) + (n & 0x00ff00ff); n = (n>>16) + (n & 0x0000ffff)…

そういえば、テスト期間

Cocoaでは、ちゃんと単体テストフレームワークが提供されてたので、メモ。しかもものすごーく簡単。まず、Xcodeで対象となるアプリケーションのプロジェクトを作る。 次にプロジェクトを右クリック→追加→新規ターゲットでUnit Test Bundleのターゲットを作る…

Cocoaはやっぱり...

Cocoaについて勉強したので、メモ。 http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjCTutorial/01Introduction/chapter_1_section_1.htmlControllerとViewをつなげるキーワードは、IBOutletとIBAction。IBOutlet指定されたインスタンス変…