#1094 new planned

allow for partially closed commands

Reported by: Ichthyostega Owned by: Ichthyostega
Priority: lesser Milestone: 2beta
Component: lumieraSteam Keywords: data design interfaces sanity
Sub Tickets: #967, #988, #990, #1089, #1095 Parent Tickets: #144, #301, #1087

Description (last modified by Ichthyostega)

The Steam-Layer commands are functors with a well defined signature.
Later in the command usage cycle, actual arguments will be supplied by the UI, which implies to clone from the original command definition prototype. In this context it seems natural that you'd want to create several variations from some base command, just by closing some, but not all arguments. However, the described feature is an advanced and challenging task to implement, because you'd have to create a new command definition, where all functor signatures have been rewritten to omit the allready closed argument. So this involves some solid amount of metaprogramming, since all this "rewriting of signature" need to happen in the compilation process. In fact, we have all the necessary tools for this task in our code base, since we indeed do rebuild function signatures to derive the expected signature of command capture and command undo functors. Yet still, you'd have to hook deep into the command framework, and you'd need to revamp our function tools somewhat to make use of the partial closure facility implemented there. This area of the code needs a rework anyway (see #967) to be retrofitted with the now standardised tuple type of the language.

The expecation is that this feature might become urgent in the rather far future, when our UI is already quite elaborate and we start to introduce flavours and variations of existing functionality.

Change history (3)

comment:1 by Ichthyostega, at 2017-03-18T16:52:14Z

blockedby: 988, 990, 967, 1089967, 988, 990, 1089, 1095

comment:2 by Ichthyostega, at 2022-10-21T22:02:27Z

Description: modified (diff)

comment:3 by Undercover Agent, at 2025-12-25T00:00:00Z

blockedby: 967, 988, 990, 1089, 1095
blocking: 144, 301, 1087
Parent Tickets: 144, 301, 1087
Sub Tickets: 967, 988, 990, 1089, 1095

Migration MasterTickets ⟼ Subtickets-plugin

Note: See TracTickets for help on using tickets.