eGospodarka.pl
eGospodarka.pl poleca

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

    W dniu poniedziałek, 10 listopada 2014 08:53:33 UTC+1 użytkownik firr napisał:

    > > zachecam zebys sprawdzil tego repla, bo wtedy bedziesz mogl
    > > na biezaco testowac rozne hipotezy
    >
    > chyba nie mam sily (ostatnio na nic nie mam sily) bo scheme sie interesuje tylko
    przygodnie - aczkolwiek i w ten sposob tanim kosztem mozna sie troche wdrożyc w
    temat, bo np teraz mi sie troche rozjasnilo

    to jak juz uznasz, ze wszystko rozumiesz, to bym Cie jeszcze poprosil,
    zebys opowiedzial o tym w taki sposob, dzieki ktoremu Twoim zdaniem
    zrozumialbys to szybciej, bo moze wtedy i ja sie czegos naucze odnosnie
    tego, jak nalezy wyjasniac takie rzeczy :)

    > mozesz powiedziec mmi moze jeszcze
    >
    > > (append '(+ 1 2 3) '(+ 1 2 3 4))
    >
    > > (+ 1 2 3 + 1 2 3 4)
    >
    >
    > 1) tutaj dodajemy dwa cytaty czy wynik nie powinien byc tez cytatem, czy tu na
    pewno to jest nie cytat tylko takie wyrazenie?

    nie
    cytat to jest pewne wyrazenie, natomiast wynik cytowania to w tym
    przypadku po prostu lista. Ewaluator albo zjada jednego quote'a
    i wypuwa dane, albo dokonuje ewaluacji wyrazenia zgodnie z normalnymi
    regulami, jesli nie ma quote'a.

    funkcja poniekad komplementarna jest funkcja "eval". w pewnym uproszczeniu
    zapis (eval '(+ 1 2)) jest rownowazny zapisowi (+ 1 2). eval to funkcja
    ktora interpretuje swoj argument jako kod w lispie.

    analogicznie, zapis (eval ''(+ 1 2)) odpowiada zapisowi '(+ 1 2)

    (podobna funkcja "eval" jest np. w javascripcie, tylko ze tam
    ewaluuje sie stringi, natomiast w lispie -- struktury danych,
    tj. drzewa symboli. dlatego funkcja "eval" w javascripcie musi
    dodatkowo przeparsowac kod, a w lispie nie)

    > 2) co dalej mozna zrobic z czyms takim
    >
    > > (+ 1 2 3 + 1 2 3 4)
    >
    > ? to jak rozumiem sie chyba nie moze wykonac?

    nie moze, bo nie mozna dodac funkcji do liczby.
    mozna z tym robic to wszystko, co mozna zrobic
    z kazda inna lista, np.

    (filter number? '(+ 1 2 3 + 1 2 3 4))
    ===> (1 2 3 1 2 3 4)

    (filter symbol? '(+ 1 2 3 + 1 2 3 4))
    ===> (+ +)

    oczywiscie przyklad jest bardzo abstrakcyjny

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: