pub fn clause<'a, FT: 'a, T>(
    term: FT
) -> impl FnMut(Span<'a>) -> IResult<Span<'a>, Clause<T>> where
    FT: FnMut(Span<'_>) -> IResult<Span<'_>, T> + Clone