This paper presents a specializer and a binding-time analyzer for a functional language where expressions are allowed to be
used as both static and dynamic. With both static and dynamic expressions, we can statically access data structures while
residualizing them at the same time. Previously, such data structures were treated as completely dynamic, which prevented
us from accessing their components statically. The technique presented in this paper effectively allows us to lift data structures
which was prohibited in the conventional partial evaluators. The binding-time analysis is formalized as a type system and
the solution is obtained by solving constraints generated by the type system. We prove the correctness of the constraint solving
algorithm and show that the algorithm runs efficiently in almost linear time.