eGospodarka.pl
eGospodarka.pl poleca

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

    W dniu niedziela, 9 listopada 2014 14:12:19 UTC+1 użytkownik g...@g...com
    napisał:
    > * JEZYK SCHEME -- KROTKIE OMOWIENIE
    >
    > ** EWALUACJA WYRAZEN
    >
    > Do glownych zalet Scheme'a nalezy to, ze laczy on w sobie prostote
    > i semantyczna sile rachunku lambda z prostota i syntaktyczna sila
    > lispa. Dzieki tym dwom cechom mozna z latwoscia rozszerzac jezyk
    > o nowe wyrazenia, w naturalny sposob komponujace sie ze starymi,
    > a takze zmieniac sposob interpretacji istniejacych wyrazen.
    >
    > Skladnia jezyka Scheme (podobnie jak wszystkich innych lispow)
    > jest bardzo prosta i stanowi "w pelni onawiasowana notacje polska".
    > Programy w lispie sa zlozone z nawiasow (przy czym kazdy nawias
    > otwierajacy musi miec odpowiadajacy nawias zamykajacy), symboli
    > (czyli dowolnych ciagow znakow oprocz nawiasow oraz znakow "`",
    > ",", "'", ".", "#", podwojnych cudzyslowiow i bialych znakow.
    > Dodatkowy warunek jest taki, ze -- aby ciag byl uznany za symbol
    > -- nie moze byc interpretowany jako liczba) oraz liczb. (Standard
    > Scheme'a definiuje rowniez inne podstawowe jednostki leksykalne, m.in.
    > stringi, znaki czy wektory, jednak ze wzgledu na prostote
    > pominiemy sobie tutaj te kwestie)
    >
    > Przykladowe wyrazenie arytmetyczne w Schemie mogloby miec zatem
    > postac:
    >
    > : (+ (* 3 4) (/ 20 5))
    >
    > Regula ewaluacji jest prosta: oczekujemy, ze wartoscia pierwszego
    > elementu listy bedzie funkcja (np. dodawanie, mnozenie itd.),
    > zas aby poznac wartosc calego wyrazenia, musimy zastosowac
    > funkcje do wartosci argumentow. Jezeli zatem symbole +, * i /
    > sa zwiazane z konwencjonalnymi dzialaniami arytmetycznymi,
    > powyzsze wyrazenie mozemy zgodnie z ta regula najpierw przeksztalcic do
    >
    > : (+ 12 4)
    >
    > a nastepnie do
    >
    > : 16
    >
    > ** FORMY SPECJALNE
    >
    > *** FORMA "quote"
    >
    > Ciekawa wlasnoscia lispa jest tzw. homoikonicznosc: kod zrodlowy
    > programow stanowi liste symboli, liczb i ewentualnie innych list,
    > zas listy, symbole i liczby sa typami danych, na ktorych programy
    > lispowe moga operowac. Aby powstrzymac ewaluator przed interpretowaniem
    > symbolu, trzeba uzyc operatora "quote". Wartoscia wyrazenia
    >
    > : (quote x)
    >
    > bedzie
    >
    > : x
    >
    > Operator "quote" dziala inaczej, niz uzyte powyzej operatory arytmetyczne.
    > Operatory arytmetyczne (domyslnie) stanowia zwykle funkcje, zas "quote"
    > jest forma specjalna, ktora charakteryzuje sie tym, ze nie ewaluuje swoich
    > argumentow. Lisp traktuje zapis 'x rownowaznie z zapisem (quote x).
    >
    > Aby uzyskac liste symboli (a b c), moglibysmy uzyc funkcji "list":
    >
    > : (list 'a 'b 'c)
    > : ===>
    > : (a b c)
    >
    > Operator "quote" dziala jednak nie tylko na symbole, ale rowniez na cale
    > wyrazenia, wiec powyzszy wynik moglibysmy uzyskac rowniez piszac po prostu
    > : '(a b c)
    > : ===>
    > : (a b c)
    >
    spoko, chcesz to mozna troche jeszcze o tym pogadac - co do tego wyzej to jako tako
    rozumiem drzewkową składnie (ktora jest fajna)
    - jako tako tez ta węzową formę - głowa i argumenty (zawsze tak jest? czy zcasem sa
    jakies inne wariacje?) - nie bardzo kojarze jednak to quote, po co to sie moze
    przydac jesli w miejscu programu gdzie mial byc kod pojawia sie takie
    nieinterpretowalne symbole to nie bedze syntax error?


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: