Sanity check - Scheme VM を書く

VM 上で実行しているオブジェクトが期待している型がどうかチェックするマクロを書いて主要部分に挟み込んだ。

#ifdef CHECK_SANITY
#define CHECK_SANITY_TYPE(type, variable)                                                                         \
{                                                                                                                 \
    if (!(type##P(variable))) {                                                                                   \
         printf("[type failure] %s should be %s :%s:%d\n", #variable, #type, __FILE__, __LINE__);                 \
         exit(-1);                                                                                                \
    }                                                                                                             \
}
#else
#define CHECK_SANITY_TYPE /* */
#endif