Меткив Nemerle
От: hardcase Пират http://nemerle.org
Дата: 27.02.10 21:28
Оценка:
Хочу прояснить механизм работы меток в языке.
Например есть следующий код:
def a = [1, 2, 3, 4];
def x = x_result: {
    foreach(i in a) {
        when(i == 3)
            x_result(i)
    }
    0;
}
WriteLine(x);

Если принять к сведению, что foreach — это макрос, разворачивающийся в рекурсивную функцию, — то каким образом происходит передача управления изнутри нее в метку x_result, находящуюся вовне?
Видимо близким аналогом можно считать такой код:
def a = [1, 2, 3, 4];
def x = x_result: {
    def loop(lst) {
        | i :: tail => 
            when(i == 3)
                x_result(i);
            loop(tail)
        | _ => 0
    }
    loop(a)
}
WriteLine(x);
http://nemerle.org/Banners/?t=Developer!&g=dark /* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.