@Override
    public String toString() {
        if(cons.equals("@Func")) {
            String paramtype = Arrays.deepToString(Arrays.copyOfRange(params, 0, params.length-1));
            paramtype = "(" + paramtype.substring(1, paramtype.length() - 1) + ")";
            return paramtype + " -> " + params[params.length-1];
        } else if(cons.equals("@Eq")) {
            return params[0] + " == " + params[1];
        } else if(cons.equals("@Cons")) {
            return params[1] + "##" + params[0];
        } else if(cons.equals("@Nil")) {
            return "\u03f5";
        } else if(cons.startsWith("@#")) {
            return cons.substring(1);
        }
        return cons + (!var? Arrays.deepToString(params).replace("[", "<").replace("]", ">"):"");
    }