On Mon, 2006-07-10 at 00:59 -0700, Erick Tryzelaar wrote:
> bug fixes:
> 1.1.3: cache the binding of every sub-expression and type to make lookup
> linear
This can be done, but it is rather tricky. It makes the AST dependent
on bound terms, since they have to be mentioned. It also means
either converting everything to use records to get mutable fields,
or, using references.
It also means some care must be taken not to use functional
programming .. which is a bit of a worry :)
But something must be done here to improve performance,
no doubt about it.
> language:
> 1.2: olabl-like labels/keywords
We have named fields, the syntax is just messy:
f struct { x = 1; y = 2; }
works now, provided f is written to accept a suitable record type.
> 1.3: classes
Well, we have classes .. just no inheritance :)
> 1.3: multimethods
Not sure these make sense.
> 2.0: type classes
Would be nice.
> 2.0: ocaml-like module interfaces for info hiding
It's not clear what this buys. We do have interfaces
already .. it's just that they can only hide or not
hide a whole symbol, they can't abstract one.
[To hide a symbol, use 'private' keyword]
However this job must be done at some level to support
separate compilation.
> 2.0: metaprogramming
>
> some way to rebind vals (this would be useful, but skaller already said
> it's not doable. Maybe we can figure out a reduced form to cover some of
> the use cases)
Felix already has several powerful metaprogramming facilities.
Including ordinary polymorphism, HOFs, macros, preprocessor,
user defined syntax.
I have an idea to turn Barry Jay's pure pattern calculus
into an impure calculus (polluted by Felix terms).
Care needed: 'metaprogramming' is a bogus idea. It's a
way of giving up on what is really required: better
polymorphism.
> compiler:
> 1.1.3: detecting missing patterns when matching
Yeah .. rewrite of pattern matching stuff ..
> 1.1.3: __LINENO__, __FILE__ macros
This should probably be done ASAP. The compiler already
does it for assert and error handling.
You can add to that
--instrument=funs
--instrument=vars
options to print a trace when a function is entered
or a variable modified, and perhaps add coverage
info (increment a static counter on each entry).
> 2.0: writing a llvm backend
This is unlikely until llvm makes an amd64 backend.
> 2.0: interpreter
Which one? We could perhaps embed Neko .. but not
while it is using Boehm gc. Lua has it's own gc,
but Lua is a bit ugly ..
What we really want is dynamic compilation of Felix
into shared libs, which are then loaded.. that's hard
to do (the type safety seems like an open problem ..)
> 2.0: direct felix debugging
Yup .. well something anyhow :) My thought is to put
a TCP/IP based debugging service into the driver.
Written in Felix I guess ... :)
--
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language