  (module t4_count_zeros
  (data List (vars a)
    (ctor Nil)
    (ctor Cons a (con List)))
  (fn count_zeros
    (type (fn-type (params (borrow (con List (con Int)))) (ret (con Int))))
    (params xs)
    (body (match xs
      (case (pat-ctor Nil) 0)
      (case (pat-ctor Cons h t) (if (app == h 0) (app + 1 (app count_zeros t)) (app count_zeros t))))))
  (fn main
    (type (fn-type (params) (ret (con Unit)) (effects IO)))
    (params)
    (body (seq (do io/print_int (app count_zeros (ctor Nil))) (do io/print_int (app count_zeros (ctor Cons 0 (ctor Cons 5 (ctor Cons 0 (ctor Cons 3 (ctor Cons 0 (ctor Nil)))))))))))
```