2017-01-01から1年間の記事一覧

帰納法と余帰納法にまつわる伝承

これはAmusement Creators Advent Calendar 2017の14日目の記事です. adventar.org 最小不動点と最大不動点のよく知られた話とか時相論理に絡めた話をゆるゆるっとするつもりです. 分かりにくかったり変なことを言っていれば気軽にご指摘ください. 記事を…

C言語で関数のオーバーロード

これはAmusement Creators Advent Calendar (ACAC) の6日目の記事です. adventar.org C++やC#にあってC言語にはない機能の一つにオーバーロード (overloading) というのがあります. これはC言語でもCPP(CPreProcessor)を使えば限定的ではあるけれどもオー…

XeLaTeXやLuaLaTeXでascmac.styのitemboxやscreenを使うとき

覚え書き XeLaTeXやLuaLaTeXでは\tbaselineshift(縦組の和欧文のペースラインの位置調整)が定義されていないのでascmac.styのitemboxやscreenを使おうとすると ! Undefined control sequence. \screen ->\@savetbaselineshift \tbaselineshift \tbaselineshi…

OCamlのannotファイルの読み方

ocamlcやocamloptでnyan.mlを-annotオプションを付けてコンパイルするとnyan.annotファイルが生成される。 このファイルにはコンパイルするときに得られた識別子のスコープとか式の型とか関数呼び出しが末尾再帰かそうでないかとかの情報が含まれています。…

WebAssembly手書き (wast) で簡単なSTGを作った

WebAssembly (wasm) のテキスト表現でwastというものがある。 僕の所属しているAmusementCreatorsの48時間ゲームジャムでこのwastをがりがり書いて簡単なSTGを作った。 デモはこちら https://akitsu-sanae.github.io/works/wast-game/index.html ソースコー…

C/C++の可変長引数マクロで引数の数でオーバーロードしたい

#define SELECTER(_1, _2, SELECT, ...) SELECT #define FOO(...) SELECTER(__VA_ARGS__, WAN, NYAN) (__VA_ARGS__) FOO(neko) // expanded to `NYAN (neko)` FOO(inu, dog) // expanded to `WAN (inu, dog)` 参考 c - Overloading Macro on Number of Argum…

RustでArrayにcollectしたい

Rustで以下のコードは違法 (0 .. 9).map(|i| i*i).collect::<[i32; 10]>::() これは配列がFromIteratorを実装していないため. こういう時はArrayVecを使う. 取り敢えずCargo.tomlのdependenciesに arrayvec = "0.3.20" を書き加えて extern crate arrayvec…