:- module bug300. :- interface. :- import_module list. :- func list_data_term(list(data_term)) = data_term. :- implementation. :- import_module string. :- import_module int. :- type data_term == mer_term(literal). :- type mer_term(T) ---> functor(qualified_name, list(mer_term(T))). :- type qualified_name == list(unqualified_name). :- type unqualified_name == string. :- type literal ---> string(string) ; int(int). list_data_term([]) = functor(["list", "[]"], []). list_data_term([H | T]) = functor(["list", "[|]"], [H, list_data_term(T)]).