eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingMakra higieniczne w jezyku SchemeRe: Makra higieniczne w jezyku Scheme
  • Data: 2014-11-12 09:02:06
    Temat: Re: Makra higieniczne w jezyku Scheme
    Od: g...@g...com szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu środa, 12 listopada 2014 05:42:15 UTC+1 użytkownik A. L. napisał:
    >
    > A do czego to sie moze przydac?...

    Zastosowaniom zamierzalem wprawdzie poswiecic osobny rozdzial,
    ale moge co nieco opowiedziec juz teraz. Ostatnio musialem napsiac
    taki kod w javascripcie:

    function allowedMoves(board, position) {
    var x = position[0];
    var y = position[1];

    var result = [];

    for(var i = x-1; i >= 0 && !board[i][y]; --i) {
    result.push([i,y]);
    }
    for(var i = x+1; i < board.length && !board[i][y]; ++i) {
    result.push([i,y])
    }
    for(var j = y-1; j >= 0 && !board[x][j]; --j) {
    result.push([x,j]);
    }
    for(var j = y+1; j < board[x].length && !board[x][j]; ++j) {
    result.push([x,j])
    }
    return result;
    }

    Sa tutaj cztery petle, z ktorymi niewiele tak naprawde mozna
    zrobic. Sa tez cztery okazje do popelnienia bledow. (Nawiasem
    mowiac, przy pisaniu tego kodu rzeczywiscie popelnilem blad,
    ktory byl dosc trudny do znalezienia)

    Gdybym mial w JS do dyspozycji system makr, moglbym napisac cos
    w stylu, powiedzmy

    function allowedMoves(board, position) {
    var x = position[0];
    var y = position[1];

    var result = [];
    var W = board.length;
    var H = board[0].length;

    with_syntax(mark($, <>, limit, n, over, p, q),
    for(var n = over $ 1; n <> limit && !board[p][q]; n = n $ 1) {
    result.push([p,q]);
    })
    {
    mark(-, >=, 0, i, x, i, y);
    mark(+, <, W, i, x, i, y);
    mark(-, >=, 0, j, y, x, j);
    mark(+, <, H, j, y, x, j);
    }
    return result;
    }

    Wprawdzie dlugosc kodu jest porownywalna, ale wszystkie pojawiajace
    sie w nim nietrywialne powtorzenia strukturalne zostaly wyekstrahowane
    do makra, co ulatwia utrzymanie kodu i zmniejsza mozliwosc popelnienia
    bledu.

    Pozniej postaram sie podac bardziej zaawansowane przyklady.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: