Add support for complex values (lists, sets, function terms, maps, etc.)
- Dominant language
- Rust
- Stars
- 289
- Forks
- 21
- PR merge metrics
- No merged PRs in 30d
Description
It is planned to extend Nemo with complex value types, such as lists and sets.
Nemo's logical model already supports two base structures for this purpose: tuple (a fixed length list) and map (a set of key-value pairs). All values and map keys can be arbitrary value terms. Tuples and maps both can have "labels": a function term like `f(a,b,c)` then corresponds to a tuple of length three with label `f`. Both tuples and maps already are used in specific input positions, e.g., in import directives like the following:
```
@import tree :- csv { resource = "dresden-trees-ages-heights.csv",format=(string,string,int,int) } .
```
where `{` and `}` delimit a map and `(` and `)` delimit a tuple.
The next step is to fully support importing, inspecting, creating, and exporting such values during reasoning. This mainly requires an efficient internal storage of nested complex types that allow for the efficient execution of operations. Some syntactic corner cases may also need to be clarified.
Contributor guide
Assessment
This issue has not been assessed yet.