Fin Features ~~~~~~~~~~~~ This is a list of intended language features for the Fin programming language. 0. Core direction Fin should become an easy to use object-orientated language with as few as possible methods and objects built-in, but powerful modern object model features. It uses semantics found (and not found!) in python, ruby, smalltalk and java/jif. 1. Lazy bindings and process objects Objects can be assigned not only values, but also unevaluated terms which are evaluated later on. This is done using the syntax a = {b + 5}. Such bindings are resolved when using a.eval. Likewise, whole methods can be stored in objects, such as a = {puts "Hello World."; exit} and other terms. Similarly, existing functions can be assigned with a = function_foo. 2. Introspection Each object knows everything about itself, and keeps track of methods invoked on it. For instance, if we have an object a = 5 and later on decide to assign a string to it via a = "foo", the internal method __action() is called. This is important for the 3rd feature. 3. Information flow policies Similar to the Jif/split extensions to Java, Fin comes with information flow support built-in. So it is possible to specify ownership and access control to object and code constructs. value{Bob:Alice} = getval() This will allow for distributed execution.