DCGs describe the relationship between lists and non-terminal arguments. However, these arguments are simply terms. They can be used to represent functions, but they do not represent them directly. To see the difference, imagine that you want to associate a Numus function with each node. In DCG, you need to decide in each case how to present this function. In one node it is feature(X, singular) , and in another node it may look different. Or you can consistently represent all objects with a list in this way [nodename=idx,..., numerus=singular,...] .
source share