Lists are defined in ECLiPSe as recursive data structures with root term '[]' so that an empty list is represented by the atom '[]'. Arrays are simply compound terms with functor '[]', thus empty arrays are also represented by the atom '[]'. This ambiguity leads to inconsistencies in instances where empty arrays must be distinguished from empty lists. As an example, consider the following query that uses dim/2 to both create a two-dimensional array and retrieve the dimensions of that array: ?- dim(Array2D, [3, 0]), dim(Array2D, Dims). Array2D = []([], [], []) Dims = [3] In this example, the dimensions provided to dim/2 in the first call do not match the dimensions that it derives from the array in the second call. Two approaches to dealing with this problem come to mind: 1) Avoid the use of empty arrays. 2) Represent arrays using a different functor, and rewrite all predicates that handle arrays to accommodate. Neither of these approaches is ideal. Are there any alternatives that I'm missing? Thanks, AlexReceived on Wed Dec 04 2013 - 20:10:20 CET
This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:21 CEST