Right now @bind is (insert summary here), but what would be EVEN cooler is support for objects to have a synchronised input and output.

Special objects would have the property that they are uniquely described by their rich output, and it makes more sense to manipulate that richer version directly.

Some examples:

Tables

Right now (ignoring file imports) you would write the code to generate a DataFrame in Julia, and the output would be a human-friendly HTML table. The HTML table is immutable.

Instead, the input and output could be merged into the same thing: you directly manipulate a nice-looking table, which is interpreted (i.e. usable in other cells) as a normal DataFrame. It could be two-way: you edit either the code or the nice-looking version, and the other gets synced.

<aside> ☎️ Problems to solve:

</aside>

Markdown

Markdown could be WYSIWYG.

Simple Julia objects

Expressions like x = 12.3, s = "Heyo", a = [4,5,6], t = MyThing(MyOtherThing(1.0, 2.0), 3.0), have output that is exactly equal to the code that defines it, but with nicer formatting.

Keyword arguments

For functions with lots of keyword arguments, like Plots.plot, we should give a list of dropdown menus, number inputs, checkboxes, for the possible kwargs with extracted docstrings.

More ideas??

UX

I see two options here: