謎スタック
#include <stdio.h> #include <stdlib.h> void *stack_push (int val, void *(*pop_continuation)(int, void *), void *(*push_continuation)(void *), void *pushc_arg) { return pop_continuation(val, push_continuation(pushc_arg)); } void *print_pop(int val, void *hoge){ printf("%d\n", val); return NULL; } int main(int argc){ if(argc < 10){ return (int)stack_push(argc+1, print_pop, (void *)main, (void *)(argc+1)); } return 0; }
地下(理学部情報科学科)の唯一神namasute氏の作品。
char配列のアセンブラで書いた SK-combinator を利用したスタックは上の影響を受けて書いた。
まあ、あれは上位構造が下位構造に"あんまり"依存しない格好の例に仕上がっていると思うのだけれども。
http://d.hatena.ne.jp/nuc/20051103/p3