eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingMakra w jezyku SchemeRe: Makra w jezyku Scheme
  • X-Received: by 10.140.36.231 with SMTP id p94mr3959qgp.13.1415559129748; Sun, 09 Nov
    2014 10:52:09 -0800 (PST)
    X-Received: by 10.140.36.231 with SMTP id p94mr3959qgp.13.1415559129748; Sun, 09 Nov
    2014 10:52:09 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net
    !eu.feeder.erje.net!newspeer1.nac.net!border2.nntp.dca1.giganews.com!nntp.gigan
    ews.com!i13no388720qae.0!news-out.google.com!u1ni1qah.0!nntp.google.com!i13no38
    8719qae.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sun, 9 Nov 2014 10:52:09 -0800 (PST)
    In-Reply-To: <f...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=78.30.110.14;
    posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
    NNTP-Posting-Host: 78.30.110.14
    References: <c...@g...com>
    <f...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <0...@g...com>
    Subject: Re: Makra w jezyku Scheme
    From: firr <p...@g...com>
    Injection-Date: Sun, 09 Nov 2014 18:52:09 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Lines: 85
    Xref: news-archive.icm.edu.pl pl.comp.programming:206874
    [ ukryj 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: