section
variable {A : Type}
definition f (a b : A) := a
infixl ` ◀ `:65 := f
variables a b : A
check a ◀ b
end

inductive List (T : Type) : Type
| nil {} : List
| cons   : T → List → List

namespace List
section
variable {T : Type}
notation `[` l:(foldr `,` (h t, cons h t) nil) `]` := l
check [(10:num), 20, 30]
end
end List

open List
check [(10:num), 20, 40]
check (10:num) ◀ 20
