efene — наш ответ golang'у
От: Mamut Швеция http://dmitriid.com
Дата: 12.01.10 16:22
Оценка: 28 (5)
Наш — в смысле Эрланговсикй

efene — это язык программирования, который работает поверх виртуальной машины Erlang'а.

Идея языка заключается в том, чтобы предоставить альтернативный синтаксис Erlang'а людям, более знакомым с языками вроде Java, C, C++, C#, Javascript.

На занный момент язык почти на 100% совместим с Erlag'ом (а в идеале бует таковым), и компилятор позволяет транслировать исходные коды efene в читаемый исходник на Erlang'е. Язык также добавляет некотрый синтаксический сахар.

Примеры можно посмотреть здесь: http://marianoguerra.com.ar/efene/#examples



Ну и собственно примеры можно показать и здесь (покажу только два):

# arraycb.fn

# http://rosettacode.org/wiki/Apply_a_callback_to_an_Array

square = fn (N) {
    N * N
}

# list comprehension
squares1 = fn (Numbers) {
    [square(N) for N in Numbers]
}

# functional form
squares2a = fn (Numbers) {
    lists.map(fn (N) { square(N) }, Numbers)
}

# functional form with lambda
squares2b = fn (Numbers) {
    lists.map(fn (N) { N * N }, Numbers)
}

# no need for a function
squares3 = fn (Numbers) {
    [N * N for N in Numbers]
}

run = fn () {
    Numbers = [1, 3, 5, 7]
    io.format("squares1 : ~p~n", [squares1(Numbers)])
    io.format("squares2a: ~p~n", [squares2a(Numbers)])
    io.format("squares2b: ~p~n", [squares2b(Numbers)])
    io.format("squares3 : ~p~n", [squares3(Numbers)])
}


# concurrent.fn

is_zero = fn (0 FunTrue otherwise _) {
    FunTrue()
} (_ _ otherwise FunFalse) {
    FunFalse()
}

say = fn (Pid, Str) {
   io.fwrite("~s~n" [Str])
   Pid ! done
}

wait = fn (N) {
    receive (done) {
        is_zero(N { 0 } otherwise{ wait(N - 1) })
    }
}

run = fn () {
    spawn(concurrent say [self(), "Enjoy"])
    spawn(concurrent say [self(), "Roseta"])
    spawn(concurrent say [self(), "Code"])
    wait(2)
    ok
}



via http://erlanger.ru/page/1315/efene-novyj-yazyk-programmirovaniya-poverh-erlang-vm


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.