Having finished the Handbook (and thus in theory absorbed all the language's expressible constructs), I still can't quite reason this out. Certainly there's no notion of recursive record types. Let's say you want to find a path. Like the person-to-person-message-passing problem, with data-defined sender, recipient, and DB of all people and who they meet (to potentially pass on the message from sender to recipient).
For just one path, I could have a None enumerant in the Person enum and a hardbounded array-of-var-Person that's full of Nones at the end (or the start).
But the problem wants all possible paths that could have reached recipient from sender.
I could cheat and snatch this right from hakank's solution, but I actually wanted to come with something "native in MiniZinc terms" by myself. Yet here I am asking.
How just how does a general-purpose-PL-conditioned programmer reshape one's formulations/thinkings to all this...
Update: took a sneak peek at the first few lines of hakank's solution (only had the top part with the problem-description visible before), and immediately I see:
int: num_edges = 13;
I guess that way, a result linked-list can be array-modeled. I suppose there is no sort of "dynamic allocation" aka "solver, YOU find out how long this list gets"? Aka lists-not-arrays in most-PL's-parlance?