ECLiPSe can interface to any external function written in C and load it dynamically if required, the C function can manipulate Prolog data, or it might be completely independent of Prolog structures. All C data can be mapped on Prolog data, in particular C structures correspond to ECLiPSe arrays. As in other Prolog systems, external procedures may succeed or fail, but ECLiPSe also offers the ability to backtrack, delay and call Prolog procedures from an external one. These features make the external predicates a powerful tool for the integration of non-Prolog data and control into ECLiPSe .