June 2011
1 post
new domain, we moved!
today is the day of the 0.9 release and the first day in society of our new domain:
http://efenelang.org
follow us on the new blog, this blog is kept for historical purposes only
see you there!
December 2010
1 post
fnt - jquery-like templates for the erlang...
About fnt - efene templates
first the most important, fnt code is hosted at github here:
https://github.com/marianoguerra/fnt—efene-templates
the documentation is here:
http://marianoguerra.com.ar/fnt/
you are invited to contribute by testing it, reporting bugs, improving the documentation, spreading the word and the most awesome of all, by helping with the development.
fnt (efene templates)...
November 2010
1 post
really nice DSL for configuration and more...
yesterday reading something about coffeescritpt (an awesome language btw) y decided to try something I saw on the coffeescript page.
after a slight modification of the parser I was able to write the following:
@public
run = fn ()
Awesome =
me:
name: "Mariano",
age: 25,
language: efene
,bob:
name: "SpongeBob",
age:...
September 2010
4 posts
congratulations to djui!
djui requested a pull from his repo today, I just pushed the changes to efene master.
with this simple action he became the first official contributor of efene.
when we reach our secret goal* of conquering the world he will be able to point to this blog post with pride ;)
* not *that* secret any more
thanks to him and hurry up! you can be the second contributor!
a little more object oriented
I added the ability to call methods inside structs.
a call to a function inside a struct will pass the struct as first parameter implicitly.
with this we get a behaviour similar to python where methods are just functions that receive an object as first parameter (normally called self).
here are some examples:
@public
present = fn (Self)
io.format("Hi!, I'm ~s ~s, my email is ~s~n",
...
more on efene's structs
I’ve decided that structs are the way to go for efene and removed all traces of “objects” from the code.
The reasons to do this:
structs are a real data structure and not a closure trick to look like a data structure.
You can introspect them, operate on them, dump and see what’s inside. This allow people to write code that interact with structs in ways I can’t...
efene now JSON friendly - introducing structs
if I describe efene as “a javascript like syntax” then it should plain nice with JSON right?
well, from now I can say it does…
introducing structs:
>>> Me = {firstname: "mariano", lastname: "guerra", location: {city: "cordoba", country: "argentina"}}
{struct,[{firstname,"mariano"},
{lastname,"guerra"},
...
August 2010
5 posts
flattr button for efene
I added a flattr button to efene pages so people can “flattr” me if they found my work interesting.
if you have a project, join to flattr, if I find it useful I will contribute (my first flatter was for dpkg :)
Getting legal
I decided to get legal and add all the changes in the code to release efene under the 3 clause BSD license.
this are some needed steps to stabilize the project so people can be sure that efene won’t eat their lunch.
next step, define a naming strategy to avoid efene modules colliding with existing and future modules of erlang.
fat arrows - some syntactic sugar for "dicts"
I was thinking on how to make some kind of dict like structure on efene with the things provided by erlang.
I identified a pattern and decided to have some syntactic sugar for it.
a common thing in erlang is to “tag” something with a two item tuple that contains the “tag” that represent what the second item is, and the value.
Things like {error, Reason}, {ok, Value}...
efene builds on windows + documentation
Today I installed a Windows XP VM and made efene work on windows, this involved two steps, build fnc.c in windows and make build scripts to compile the compiler and the libraries. the result is fnc.exe (you don’t need to build this, it’s already available in the repo) and the documentation to build efene: * Build efene on *nix * Build efene on windows
new compiler frontend and documentation
since yesterday I worked rewriting the compiler frontend (fnc) to C, unifying fnc and fn and writing documentation for it.
the result is a brand new unified compiler frontend with full documentation.
the docs are here: http://marianoguerra.com.ar/efene/docs/reference/fnc.html
happy compiling!
July 2010
4 posts
efene 0.8 - a language for the erlang VM -...
For the complete release notes with details on each item and examples see the release notes here: http://marianoguerra.com.ar/efene/docs/releases/oeight.html About efene
efene is a programming language that runs on the erlang virtual machine. The idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript. The...
meta programming in efene take II
yesterday I made the first implementation of meta programming in efene, today some changes and some code to show that I wasn’t dreaming too much.
first change: ${ … } expression is now $( … ) to match Template Haskell syntax (and jquery :P)
second change: now meta programming can be made at module level, that means that you can generate any kind of code with meta programming...
meta programming in efene
I was reading about template haskell and decided to give it a try in efene, the result after an hour of hacking (and reading) is this:
>>> [|1|]
{integer,1,1}
>>> [| 1 + 2 * 3 |]
{op,1,'+',{integer,1,1},{op,1,'*',{integer,1,2},{integer,1,3}}}
>>> erl_eval.expr([|1 + 2 * 3|], erl_eval.new_bindings())
{value,7,[]}
>>> [|fn (A, B) { A + B }|]
{'fun',1,
...
a gen_server behavior in efene
to show the status of efene and show that it can be used for complex and real life thing I decided to port a random gen_server example to efene (in this case ifene).
I did a search for “erlang behavior example” and picked a useful example, in this case this post seemed interesting:
http://20bits.com/articles/erlang-a-generic-server-tutorial/
you can see the original code there,...
June 2010
1 post
efene 0.7 - a language for the erlang VM -...
For the complete release notes with details on each item and examples see the release notes here: http://marianoguerra.com.ar/efene/docs/releases/oseven.html About efene
efene is a programming language that runs on the erlang virtual machine. The idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript. The...
May 2010
7 posts
for loops
for those who can’t live without for loops or aren’t confortable with recursion, map and lists.foreach, now efene provides for loops.
here are some examples, after them the output of the execution:
@public
run = fn ()
R0 = for X in lists.seq(1, 10)
A = X + 1
A
R1 = for X in lists.seq(1, 10) if X % 2 == 0
A = X + 1
A
R2 = for X in...
"fixing" if expressions in erlang
In erlang the if expression works the same way as guards, from the erlang documentation:
The set of valid guard expressions (sometimes called guard tests) is a subset of the set of valid Erlang expressions. The reason for restricting the set of valid expressions is that evaluation of a guard expression must be guaranteed to be free of side effects.
that means that we...
efene 0.6 released - objects, attributes,...
For the complete release notes with details on each item and examples see the release notes here: http://marianoguerra.com.ar/efene/docs/releases/osix.html About efene
efene is a programming language that runs on the erlang virtual machine. The idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript. The language...
efene tutorial, first chapter draft finished
I started working on an efene tutorial that starts with a hello world and ends with a fully usable web application.
The tutorial is divided in 4 parts, right now the first part is finished, but needs some review from people actually following the tutorial.
The tutorial is located here:
http://www.marianoguerra.com.ar/efene/tutorial/
...
web hello world with mochiweb and simplebridge in...
I was looking for examples on how to make a hello world web page using erlang, and since I couldn’t find it I made it myself. for this example we are going to use mochiweb and simplebridge
mochiweb: MochiWeb is an Erlang library for building lightweight HTTP servers.
simplebridge: SimpleBridge takes the pain out of coding to multiple Erlang HTTP servers by creating a standardized...
Download and build latest snapshot of efene
This instructions describe how to download the latest snapshot of efene from the git repository and how to build them from source.
the requirements are:
a unix-like operating system (shell, wget and tar will be used)
erlang installed
the following is a valid shell script, you can put it on a file and run it with “sh file” and will do the tasks for you
#!/usr/bin/env sh echo "store the...
efene 0.5 - two languages for the erlang VM -...
new release of efene.
efene is a programming language that runs on the erlang virtual machine.
the idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript and alternatively python and ruby using ifene (indented efene).
the language is almost 100% compatible with erlang (and will be), the compiler allows to...
April 2010
1 post
efene 0.4 - a language for the erlang VM -...
new release of efene.
efene is a programming language that runs on the erlang virtual machine.
the idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript.
the language is almost 100% compatible with erlang (and will be), the compiler allows to translate an efene source file into a readable erlang one or...
March 2010
4 posts
efene 0.3 - a language for the erlang VM -...
third release of efene.
efene is a programming language that runs on the erlang virtual machine.
the idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript.
the language is almost 100% compatible with erlang (and will be), the compiler allows to translate an efene source file into a readable erlang one or...
interactive shell and command line eval!
today I added two features that will make learning efene a lot easier.
this features are the interactive shell and command line eval.
interactive shell is what you get in erlang when you type erl, it let you write expressions that are evaluated right away and let you experiment with stuff.
the command line eval is what you get in python when you do
python -c “something”
the...
efene Language Reference
I started documenting the syntax of efene in the Language Reference
any comment will be welcome
efene programming language 0.2 released
second release of efene.
project website: http://github.com/marianoguerra/efene
efene is a programming language that runs on the erlang virtual machine. the idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript. the language is almost 100% compatible with erlang (and will be), the compiler allows to...
February 2010
2 posts
efene mailing list
a mailing list is available at librelist just send a mail to efene@librelist.com to subscribe.
as first mail you may send a hello world program in efene and present yourself by saying your name, where you are, how did you heard about efene and anything else you would like to say.
efene on rosetta code
I started to add content to rosseta code about efene so people can see how some problems are solved with efene compared with other languages.
this are some links:
language page
unresolved problems
you are invited to start contributing examples.
January 2010
5 posts
Some ideas behind efene
For some it may be something small but I consider this two features to be interesting on efene, I think that both may help in creating small domain specific languages that may make easier to code.
Or maybe It’s just me :P
The first one is the posibility to write function arguments without usign a ‘,’ this looks like the following.
draw = fn (dot at X Y) {
...
Learning some efene, erlang and erlang internals
Let’s play a little with efene and in the meantime learn some erlang and erlang internals for free.
Let’s build a simple division function that will return the result of the division between A and B but return the atom error if B is 0
divide = fn (_A, 0) {
error
} (A, B) {
A / B
}
run = fn () {
Helper = fn (A, B) {
io.format("~p/~p=~p~n", [A,...
how to build efene
to build efene you need to get the sources by doing
git clone git://github.com/marianoguerra/efene.git
you will also need erlang and the go compiler installed on your machine
then just do
cd efene/src
./build.sh
this will build the erlang modules and the efene compiler frontend (which is written in go)
after that you can go to the examples dir to see some real world code, you can...
efene 0.1 released
efene is a programming language that runs on the erlang virtual machine.
the idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript.
the language is almost 100% compatible with erlang (and will be), the compiler allows to translate an efene source file into a readable erlang one. It also adds some syntactic...