viewl and viewr implemented with IsZero GADT
finally implement "first" using Peano natural number. Understand the situation of type-level literal and peano number.
MyNat -> Sing
use SingI, now "first" doesn't have value witness