[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[Vala] Proposal: ValaScript
- From: Yu Feng <rainwoodman gmail com>
- To: vala-list gnome org
- Subject: [Vala] Proposal: ValaScript
- Date: Sat, 17 May 2008 02:29:34 -0400
Dear All,
I am thinking about a subset or variation of Vala: Valascript.
(the proposed) Valascript is almost a subset of Vala:
* cannot define Classes and explicit functions
* Strong type checking; type inferring.
* Direct access to GLib based libraries via vala vapi mechanism
* Possibly with a garbage collector.
* Named lambda functions -- this will be the way most valascripts
define functions; need to extend the current lambda function support in
Vala first.
* session code block, i.e, statements not wrapped in any function body.
* Interpreted language
A sample session illustrating the idea(suppose >> is the prompt, and in
an interactive session)
>> Using Gtk;
>> lambda void* thread_func = (void* ) => {
&> MainLoop loop = new MainLoop(NULL, true);
&> loop.run();
&> return NULL;
&> };
>> Thread::create(thread_func, false);
>> var window = new Gtk.Window();
>> var button = new Gtk.Button.with_label("this is a button");
>> window.add(button);
>> button.clicked += (sender) => {
&> message("button clicked");
&> };
>> window.show();
>> # click the button and see
button clicked
>> lambda double f = (double x) => {
&> return x*x;
&> };
>> message("%lf", f(3.14));
9.86
The reason that a thread is required to run the mainloop separately is
because the script is ran in the thread of the interpreter, and (1)
there is no mainloop in the interpreter; (2) we don't want to block the
interaction with the window.
An alternative design is to always implicitly create a mainloop in the
interpreter, then let the interactive shell and the script share the
same mainloop. It is not very safe though.
Yu
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]