Squashed commit of the following:

commit 7fa029a6e14023a0421ce7bf0702052a14590db3
Author: suhorng <suhorng@gmail.com>
Date:   Mon Nov 18 11:05:53 2013 +0800

    add IOs

commit a54685e19d47aee2ae4244074f7a8c710eb468f8
Author: suhorng <suhorng@gmail.com>
Date:   Mon Nov 18 10:33:27 2013 +0800

    move TA AST printing to Language.BLang.Homework.Homework3

commit c2ed5a2482df73b4f6fc6aee9c86eccb52c1e50b
Author: suhorng <suhorng@gmail.com>
Date:   Mon Nov 18 10:27:37 2013 +0800

    replace PARAM_LIST_NODE by NONEMPTY_RELOP_EXPR_NODE

commit 92c4d276e67d06aa99e68f1558c47ba9e8ef61ac
Author: suhorng <suhorng@gmail.com>
Date:   Mon Nov 18 10:26:03 2013 +0800

    rename plzPrintNode => printChildren; printNode => makeNode

commit 84217f677dbe7a87559c93ec174b7f2b041a9a57
Author: suhorng <suhorng@gmail.com>
Date:   Mon Nov 18 10:23:31 2013 +0800

    we have first-class functions -- just printNode

commit a0599e8cd08c997a5ace7031c5c565b252ab697e
Author: LauZi <st61112@gmail.com>
Date:   Mon Nov 18 05:16:35 2013 +0900

    Added TPtr -> arr[]; main does not print [AST] s.t. the output can be directly redirected to a .gv file

commit bbb1fea04fd9b3629ff07725a3cd81b3bbfc7092
Author: LauZi <st61112@gmail.com>
Date:   Mon Nov 18 03:07:50 2013 +0900

    Main changed to local printAST; minor bugs fixed

commit 9df00654edeed1331758b445055bc5472178b290
Author: LauZi <st61112@gmail.com>
Date:   Mon Nov 18 01:21:50 2013 +0900

    Added noChildren

commit 27809c24c60d4e424410699eb88eef06100eaf15
Author: LauZi <st61112@gmail.com>
Date:   Mon Nov 18 01:06:04 2013 +0900

    Fixed many type errors

commit be308ebfc493e448ce1bde15055523638fc9e871
Author: LauZi <st61112@gmail.com>
Date:   Sun Nov 17 23:46:45 2013 +0900

    Using Existential types

commit 0b9039e75415459ea6b15aed6576bb889061feae
Author: LauZi <st61112@gmail.com>
Date:   Sun Nov 17 22:33:11 2013 +0900

    BLOCK_NODE children changeeeeed

commit a0cc899f9b06f9326d56816981ee721ec95ef656
Author: suhorng <suhorng@gmail.com>
Date:   Sun Nov 17 18:27:54 2013 +0800

    (1) \f x -> f x => \(f,x) -> f x (2) [ArgDecl] => [ASTStmt]

commit 5109e83ede4e3ceef2dd0850c5427749a6717c89
Author: suhorng <suhorng@gmail.com>
Date:   Sun Nov 17 12:43:17 2013 +0800

    make Parser.AST an instance of ASTAll

commit 105b6ab90202d943e976c7590892a43fc3b5fc93
Author: LauZi <st61112@gmail.com>
Date:   Sun Nov 17 04:21:17 2013 +0900

    Y U NO HETEROGENEOUS LIST

commit 5f6ff0f11144d3e80ce0267357fd0fe12be101d5
Author: LauZi <st61112@gmail.com>
Date:   Sun Nov 17 02:53:29 2013 +0900

    class ASTAll where printNode = ... ; lots of compile errors