constant f : nat → nat → nat constant g : string → string → string infix ` & `:60 := f infix ` & `:60 := g set_option pp.notation false check 0 & 1 check "a" & "b" check tt & ff notation `[[`:max l:(foldr `, ` (h t, f h t) 0 `]]`:0) := l notation `[[`:max l:(foldr `, ` (h t, g h t) "" `]]`:0) := l check [[ (1:nat), 2, 3 ]] check [[ "a", "b", "c" ]]