def foo: List Unit → Type
| []       => Unit → Unit
| _ :: tl  => foo tl

partial def bar: (l: List Unit) → foo l → foo l
| []     , f => λ t => f t
| _ :: tl, f => bar tl f

def bar': (l: List Unit) → foo l → foo l
| []     , f => by simp only [foo] at f; exact (λ t => f t)
| _ :: tl, f => bar' tl f

/-- info: () -/
#guard_msgs in
#eval bar [()] id ()
