Add argument variable binding
diff --git a/src/lisp/istream.h b/src/lisp/istream.h
new file mode 100644
index 0000000..aceada8
--- /dev/null
+++ b/src/lisp/istream.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include <stdbool.h>
+#include <stdio.h>
+
+#define MIN(a, b) (a) > (b) ? (b) : (a)
+
+struct istream
+{
+	void *data;
+
+	// These two return -1 on error
+	int (*peek)(struct istream *s);
+	int (*get)(struct istream *s);
+
+	int (*read)(struct istream *s, char *buffer, int size);
+
+	void (*showpos)(struct istream *s, FILE *out);
+};
+
+struct istream *new_stristream(char *str, int length);
+// same as above but null terminated
+struct istream *new_stristream_nt(char *str);
+void del_stristream(struct istream *stristream);
+
+struct istream *new_fistream(char *path, bool binary);
+void del_fistream(struct istream *fistream);
\ No newline at end of file