scheme implementation in C