Hi Larry,
I don't like this syntax in cells:
~~~~
shared x: INTEGER
~~~~
to get declare an attribute.
In my opinion, when you have:
~~~~
x: INTEGER
~~~~
it should be an attribute. And we should be able to write
routines in a cell:
~~~~
f (a: INTEGER)
require
a_not_negative: a >= 0
local
b: INTEGER
do
b := a * 2
print (b)
end
~~~~
That way, we can have local variables, and more importantly
we can have assertions. Then, in the same cell or another
cell we can have:
~~~~~
x := 5
f (x)
~~~~~
So, code which looks like a feature (routine or attribute)
should be added to the cumulative class. Code which looks
like an instruction should be executed. And code which
looks like an expression should be executed and its result
displayed (using `print` internally).
We should also be able to declare a class:
~~~~~
class FOO
create
make
feature
...
end
~~~~~
Then use this class:
~~~~~
f: STRING
local
my_foo: FOO
do
create my_foo.make
my_foo.do_something
Result := my_foo.some_output
end
~~~~~~
Then display some result:
~~~~~~
f
~~~~~~
Class FOO goes in its own class time.
Feature `f` does in the cumulative class
The last cell goes to:
execute_cell_3
do
print (f)
end
in the cumulative class.
On 18/12/2025 19:59, Liberty Lover wrote:
> Hi Javier, Eric,
>
> I've drafted a vision document <
https://github.com/simple-eiffel/
> claude_eiffel_op_docs/blob/main/EIFFEL_NOTEBOOK_VISION.md> for
> EiffelNotebook:
>
> Historical context: This continues a long tradition of interactive
> development. Back in my Visual FoxPro days, we loved the Command
> Window - immediate execution, persistent state, test ideas before
> committing to PRG files. Same lineage as Smalltalk workspaces,
> LISP REPLs, and now Jupyter. EiffelNotebook brings that exploratory
> programming workflow to Eiffel.
>
> Architecture: Local HTML/HTMX/Alpine GUI served by a simple_web
> server. No Node.js, no Python, no npm - just one Eiffel executable.
> Runs entirely on localhost.
>
> Execution model: Accumulated class + melting. Each cell becomes a
> feature in a growing class. Attributes persist state between
> cells. ~1-3 seconds per cell execution.
>
> The compile delay is the only difference from VFP's instant execution
> - but the workflow is identical: try something, see result,
> iterate. That's acceptable for notebook-style exploration.
>
> Libraries it dogfoods: simple_web, simple_htmx, simple_alpine,
> simple_json, simple_process, simple_file, simple_console,
> simple_eiffel_parser, simple_markdown, simple_template - about 10
> libraries working together.
>
> Happy to collaborate on design and implementation.
>
> ---
> Larry
>
> On Thu, Dec 18, 2025 at 7:32 AM
javier...@gmail.com
> <mailto:
javier...@gmail.com> <
javier...@gmail.com
> <mailto:
javier...@gmail.com>> wrote:
>
> Hi Larry, I think a great way to really test and showcase all the
> libraries you’re building is to put them together in a challenging,
> practical project. One idea that could be both exciting and valuable
> is `EiffelNotebook` - an interactive notebook environment for
> Eiffel, built on top of thesimple-eiffel libraries <https://
>
jupyter.org/> used a lot in AI and data science).
> |
https://github.com/gobo-eiffel/gobo <https://
>
github.com/gobo-eiffel/gobo> | ~1,500 | ~300,000
> | ~4M | Excellent (Eric Bezault) | ✅ GitHub |
> |
https://github.com/finnianr/eiffel-loop <https://
>
github.com/finnianr/eiffel-loop> | 4,100+ classes | ~615,000
> --
> You received this message because you are subscribed to the Google
> Groups "Eiffel Users" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to
eiffel-users...@googlegroups.com
> <mailto:
eiffel-users...@googlegroups.com>.
> eiffel-users/e985a929-40b8-46af-
> b323-2751d27d216fn%
40googlegroups.com <
https://groups.google.com/d/
> msgid/eiffel-users/e985a929-40b8-46af-
> b323-2751d27d216fn%
40googlegroups.com?
> utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Eiffel Users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> users/CA%2B3qnje8p5sdkRcofsrGfOo-oVVrDVT2FDRMj_kJmaw3b%3D-
> V7w%
40mail.gmail.com <
https://groups.google.com/d/msgid/eiffel-users/
> CA%2B3qnje8p5sdkRcofsrGfOo-oVVrDVT2FDRMj_kJmaw3b%3D-
> V7w%
40mail.gmail.com?utm_medium=email&utm_source=footer>.