knowsys / knowsys/nemo

Add support for complex values (lists, sets, function terms, maps, etc.)

Open
#699 0 comments 1 reaction 1 assignee Claimed by @mmarx View on GitHub
builtins enhancement logical physical
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.