This article introduces a new approach to program representation in genetic programming by using a strongly-typed abstraction-based scheme, replacing the traditional s-expression format. The research demonstrates the system's capability to express complex programming behaviors, including recursion and data types, without explicitly defining them in its terminal set. Preliminary results highlight the effectiveness of this method in evolving simple boolean programs and recursive behavior effectively.