implement Egison type class