謎スタック

#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