Replies: 4 comments 3 replies
-
Great questions! I'll answer everything when I have time, next week probably. |
Beta Was this translation helpful? Give feedback.
-
Some exploration results: Mapping of element names to node types in Node.cs Node result = xelem.Name.LocalName switch
{
"one" => new OneNode(),
"all" => new AllNode(),
"prl" => new ParallelNode(),
"markov" => new MarkovNode(),
"sequence" => new SequenceNode(),
"path" => new PathNode(),
"map" => new MapNode(),
"convolution" => new ConvolutionNode(),
"convchain" => new ConvChainNode(),
"wfc" when xelem.Get<string>("sample", null) != null => new OverlapNode(),
"wfc" when xelem.Get<string>("tileset", null) != null => new TileNode(),
_ => null
};
A problem I found while reading the code: |
Beta Was this translation helpful? Give feedback.
-
Sorry for the brevity, I'll expand on this later. |
Beta Was this translation helpful? Give feedback.
-
So, I've worked my way through the whole codebase and I think I've understood almost all of it; I've also written docs and some explanatory comments, so I'll be making a pull request soon, but I have a few more questions and observations relating to specific parts of the code:
|
Beta Was this translation helpful? Give feedback.
-
This is a fantastic project, and over the last few days I've basically dropped what I was doing and focused on trying to understand it. Thanks very much for making it open source! It seems like a lot of other people are interested in the project too, and I think there is definitely a need for more resources. I would love to create some of these myself:
However, I will need to understand the project better before I'm able to do a good job of any of those. There are a few things which would be most helpful to elaborate on. Sorry that I have so many questions!
one
in the XML format?), "forall", "rulenode" (does this mean either an "exists" or "forall" node?), "sequence node", "WFC node" and "Markov node" are mentioned, but there are alsoprl
,path
,map
,convolution
andconvchain
in the source code. I think I have figured out some of this by reading the source code and watching the GIFs, but it would be really helpful to have a comprehensive list of the node types with descriptions of their grammar (i.e. what parameters they have and what types of child node, if any, they have) and semantics (i.e. what does the node mean in a program).The rest are somewhat less important technical points, but if you can explain then I would appreciate it. Understanding the implementation would be very helpful for writing my own implementation of the language.
Regarding inference, there's already another discussion thread asking for a blog post about this; if you do want to write a longer explanation of how inference works "under the hood", there are a few points I'd like to understand:
A couple more questions under "notes":
*
symbol in a rule). How are you dealing with these? I ask because I have an idea for how to do this with DFAs which might be more efficient; particularly, it could handle all patterns in one search, and allow updates without re-doing the whole-grid search or checking the changed areas with a separate algorithm. I'm working on a proof-of-concept for it now.Again, sorry that I'm asking a lot! There's so much about this project that could do with more in-depth explanation, and I'd love to understand it well enough to write some of those explanations myself, but at the moment I think you are the only person who understands it well enough.
Beta Was this translation helpful? Give feedback.
All reactions