==================
basic void func
==================

void() main = () {}

---

(source_file
  (statement
    (variable_declaration
      (type
        (function_type
          (type)
          (parameter_list)))
      (identifier)
      (expression
        (function_literal
          (parameter_declaration)
          (block))))))


==================
funcs that return funcs
==================

void()() gives_void_func = () { () {} }

---

(source_file
  (statement
    (variable_declaration
      (type
        (function_type
          (type)
          (parameter_list)
          (parameter_list)))
      (identifier)
      (expression
        (function_literal
          (parameter_declaration)
          (block
            (expression
              (function_literal
                (parameter_declaration)
                (block)))))))))

==================
very very silly func
==================

int(float, str)(map(str, int())) average_java_developer = (get_score_map) { (my_int, my_float) { 5 } }

---

(source_file
  (statement
    (variable_declaration
      (type
        (function_type
          (type)
          (parameter_list
            (type)
            (type))
          (parameter_list
            (type
              (map_type
                (type)
                (type
                  (function_type
                    (type)
                    (parameter_list))))))))
      (identifier)
      (expression
        (function_literal
          (parameter_declaration
            (identifier))
          (block
            (expression
              (function_literal
                (parameter_declaration
                  (identifier)
                  (identifier))
                (block
                  (expression
                    (int_literal)))))))))))


==================
function call
==================

int result = add(3, 2)

---

(source_file
  (statement
    (variable_declaration
      (type)
      (identifier)
      (expression
        (function_call
          (expression
            (identifier))
          (expression
            (int_literal))
          (expression
            (int_literal)))))))


==================
builtin call
==================

void @print("ofdjksd {}", 5)

---

(source_file
  (statement
    (void_statement
      (expression
        (builtin
          (identifier)
          (expression
            (string_literal))
          (expression
            (int_literal)))))))
