You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This task is automatically imported from the old Task Issue Board and it was originally created by jaroslavtulach.
Original issue is here.
Since #182801491 the libraries team can provide metadata for dynamic widgets. However all such data are computed at once - including tag_values for current self. Certain IDE use-cases would benefit from just knowing there is DisplayAlways and Single_Value_Chooser without evaluating the self.columns names:
The best way to achieve this while keeping compatibility (see discord for more discussions) seems to be to implement lazy attributes to constructors. E.g. allow for:
type Single_Value_Chooser ~tag_values
syntax where ~ means that the tag_values evaluation shall be deferred and evaluated only when needed. Lazy atom fields are useful language feature in general. Not only they can help us solve the problem of "not computing the drop down widgets value uselessly", but they are useful for constructing infinite data structures easily. Having them in the Enso language would significantly improve usability of the language.
We already have a working prototype. The prototype was created in November when working on elimination of Unsafe.set_atom_field. At the end #183578531 has choosen different solution (Meta.atom_with_hole), but the prototype of "atoms with lazy values" exists and helps quite accurately estimate the amount of work needed on the engine side needed to implement this new language feature.
This task is automatically imported from the old Task Issue Board and it was originally created by jaroslavtulach.
Original issue is here.
Since #182801491 the libraries team can provide metadata for dynamic widgets. However all such data are computed at once - including
tag_values
for currentself
. Certain IDE use-cases would benefit from just knowing there isDisplayAlways
andSingle_Value_Chooser
without evaluating theself.columns
names:@Display Always @Single_Value_Chooser (self.columns.map .name)
The best way to achieve this while keeping compatibility (see discord for more discussions) seems to be to implement lazy attributes to constructors. E.g. allow for:
syntax where
~
means that thetag_values
evaluation shall be deferred and evaluated only when needed. Lazy atom fields are useful language feature in general. Not only they can help us solve the problem of "not computing the drop down widgets value uselessly", but they are useful for constructing infinite data structures easily. Having them in the Enso language would significantly improve usability of the language.We already have a working prototype. The prototype was created in November when working on elimination of
Unsafe.set_atom_field
. At the end #183578531 has choosen different solution (Meta.atom_with_hole)
, but the prototype of "atoms with lazy values" exists and helps quite accurately estimate the amount of work needed on the engine side needed to implement this new language feature.Tasks:
IR
phases to allow~
inAtom
constructors~
Blockers:
#182801491 blocked
#183578531 blocked
The text was updated successfully, but these errors were encountered: