eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programminglambda, clojuresRe: lambda i clojures
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: " " <f...@g...SKASUJ-TO.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: lambda i clojures
    Date: Sun, 16 Oct 2011 09:01:00 +0000 (UTC)
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 62
    Message-ID: <j7e6gc$fm2$1@inews.gazeta.pl>
    References: <j7bnrd$4le$1@inews.gazeta.pl>
    <a...@q...googlegroups.com>
    <j7cpnj$8b3$1@inews.gazeta.pl> <j7d4br$7d6$1@news.onet.pl>
    <j7dpt1$f7u$1@inews.gazeta.pl> <j7e37f$fqr$1@news.onet.pl>
    NNTP-Posting-Host: localhost
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1318755660 16066 172.20.26.242 (16 Oct 2011 09:01:00 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sun, 16 Oct 2011 09:01:00 +0000 (UTC)
    X-User: fir
    X-Forwarded-For: 31.61.128.240
    X-Remote-IP: localhost
    Xref: news-archive.icm.edu.pl pl.comp.programming:192876
    [ ukryj nagłówki ]

    Piotr Chamera <p...@p...onet.pl> napisał(a):

    > W dniu 2011-10-16 07:25, f...@g...SKASUJ-TO.pl pisze:
    > > Piotr Chamera<p...@p...onet.pl> napisał(a):
    > >> Closure to taka funkcja powiązana ze środowiskiem, w którym została
    > >> zdefiniowana. N.p.:
    > >>
    > >> (let ((licznik 0))
    > >> (defun następny () (setf licznik (1+ licznik))))
    > >>
    > >> CL-USER> (następny)
    > >> 1
    > >>
    > >> CL-USER> licznik
    > >> Unbound variable: LICZNIK
    > >> [Condition of type UNBOUND-VARIABLE]
    > >>
    > >> CL-USER> (następny)
    > >> 2
    > >>
    > >> W Wikipedii jest to całkiem dobrze opisane:
    > >> http://en.wikipedia.org/wiki/Closure_%28computer_sci
    ence%29
    > >
    > > a czym sie rozni od zwyklej normalnej 'niepowiazanej' funkcji?
    > > w tym prztkladzie wyzej nie rozumiem co to jest i co
    > > to ma ilustrowac:
    > >
    > >> CL-USER> licznik
    > >> Unbound variable: LICZNIK
    > >> [Condition of type UNBOUND-VARIABLE]
    >
    > Że „licznik” nie jest dostępny globalnie - po wyjściu z zasięgu
    > konstrukcji „let” przestał być widoczny, ale po wywołaniu funkcji
    > nadal jest dostępny - to fragment środowiska, w którym funkcja była
    > definiowana, który został przez nią przechwycony. Nie może być
    > odłożony na stosie, jest zewnętrzny w stosunku do ciała funkcji i może
    > przenosić informację pomiędzy jej wywołaniami. Żeby to zrobić w C
    > trzeba by pewnie zaalokować jakiś obiekt na stercie i przekazać
    > do funkcji wskaĹşnik do niego.
    >
    > Po rozszerzeniu pierwszego przykładu o drugą operację na
    > liczniku mamy najprostszy obiekt z dwiema operacjami na nim
    > i enkapsulacją jego wewnętrznego stanu.
    >
    > (let ((licznik 0))
    > (defun następny () (setf licznik (1+ licznik)))
    > (defun poprzedni () (setf licznik (1- licznik))))
    >

    denerwuje mnie to niepowiernie bo nic z tego nie rozumiem,
    np w c funkcja jest definiowana tylko raz i dotego w globalnym
    kontekscie wiec powiedzmy ze to c nie dotyczy

    ale czy tam gdzie tego sie uzywa taka funkcje definiuje sie kilka
    razy w roznych kontekstach? czy kazda z nich przechwytuje ten kontekst
    raczej przez referencje czy przez wartosc? czy np jesli jest 5 definicji
    to te wspolne przechwycine dane sa wspolne dla tych definicji?



    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

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: