src: all the source code with compilation scripts
    frontend: phases taking the original source code and generate
          tokens and subsequently assemble them into the AST
    backend: phases after parser generates abstract syntax tree
        c: library to support Funk primitives in C during runtime
            enc.c: handles scoping and aliasing
            func.c: handles function calls and special rules
                for assigning functions
            include: header files for corresponding .c files
                enc.h: contains data structures for
                       variables their environment
                func.h: contains function instance struct
    include: .mli files shared between frontend and backend
        commponents.mli: components of Funk that are shared in common
                 between frontend and backend, ie. the abstract
                 syntax tree

funklang: files symbolic linked to all the src file so that it's easier to use ocamlbuild to compile 
          all the files.

Compilation instruction
    method 1: goto "src" directory and run make, it will generate a script for compiling all the files

    method 2: after running make in the "src/c" directory, there is a script in the funklang directory