Graphite icon indicating copy to clipboard operation
Graphite copied to clipboard

Make the Graphene type system more powerful with bidirectional (or HM?) type inference

Open Keavon opened this issue 1 year ago • 0 comments

Implement https://en.wikipedia.org/wiki/Hindley–Milner_type_system in Graphene. Or that might be unnecessarily complex and powerful for our needs, where we just likely need bidirectional type inference, something akin to Rust's own ability to detect what a variable's declared type is based on usages. Essentially this means we'd have up-and-down type inference, like what's common in languages such as TS or Rust. This can help let us know which typed implementation of a node is the appropriate one to reference when a node input is disconnected (but it's not part of the rendered graph) and that input has to be set to some type's default value.


  • Type inference at declaration site when usage site is further up or down in the node flow (needed to allow the Number value node to have a built-in Into node)
    • Support for traits

Keavon avatar Feb 21 '24 02:02 Keavon