eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programminglambda, clojures
Ilość wypowiedzi w tym wątku: 30

  • 21. Data: 2011-10-16 16:44:51
    Temat: Re: lambda, clojures
    Od: Bronek Kozicki <b...@s...net>

    On 15/10/2011 11:38, f...@g...SKASUJ-TO.pl wrote:
    > Umialby ktos mi wytlumaczyć o co z tym chodzi, i np jak
    > ewentalnie mogloby to sie przydac na gruncie c? Juz kiedys

    czytaj tutaj
    http://www.informit.com/guides/content.aspx?g=cplusp
    lus&seqNum=254 i
    dwie następne strony


    B.


  • 22. Data: 2011-10-16 17:11:56
    Temat: Re: lambda i clojures
    Od: " " <f...@g...SKASUJ-TO.pl>

    teraz dla odmiany bez problemu wydaje sie zrozumialem o co ci chodzi
    ale o ile tak to jest to dziwne (przynajmniej na gruncie c)

    chodzi ci o cos takiego:


    wskaznikDoFunkcji funkcjaOut()
    {
    int x;
    int y;

    return funkcjaIn() {

    //uzywa tu x i y

    }

    }
    to ze funkcjaIn chce dzialac na zmiennych z funkcji out
    to mozna uznac jeszcze za dosyc naturalne (i nie ma
    z tym semantycznie problemu, mozna np przeciagnac przez argumenty

    dziwniejsze jest to ze ktos chce uzywac funkcjiIn po zniszczeniu
    funkcjiOut - jesli tylko o to w tym chodzi to x i y mozna zrobic
    statycznymi i osiagnie sie efekt ze wszystko ok chyba ze
    chodzi o cos innego/wiecej

    dalej nie rozumiem w jakich wypadkach to moze sie jakos specjalnie
    przydac (moze sa jakies wypadki ale dla mnie to osobliwie nietypowe,
    (musialbym sie zastanowic) chyab ze ta funkcja jest wstawiona jedna
    w druga dla picu i mozna je traktowac jak rownolegle ktore chca
    po prostu operowac na tych wspoldzielonych statikach

    :/ troche dziwna sprawa


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


  • 23. Data: 2011-10-16 17:56:45
    Temat: Re: lambda i clojures
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2011-10-16 19:11, f...@g...SKASUJ-TO.pl pisze:
    > teraz dla odmiany bez problemu wydaje sie zrozumialem o co ci chodzi
    > ale o ile tak to jest to dziwne (przynajmniej na gruncie c)
    >
    > chodzi ci o cos takiego:
    >
    >
    > wskaznikDoFunkcji funkcjaOut()
    > {
    > int x;
    > int y;
    >
    > return funkcjaIn() {
    >
    > //uzywa tu x i y
    >
    > }
    >
    > }
    > to ze funkcjaIn chce dzialac na zmiennych z funkcji out
    > to mozna uznac jeszcze za dosyc naturalne (i nie ma
    > z tym semantycznie problemu, mozna np przeciagnac przez argumenty
    > dziwniejsze jest to ze ktos chce uzywac funkcjiIn po zniszczeniu

    Jeśli spojrzeć na to tak, że funkcjaIn jest rezultatem zwracanym
    przez funkcjaOut, to jest całkiem naturalne, że tego rezultatu
    używamy nadal po zakończeniu działania funkcjiOut.

    > funkcjiOut - jesli tylko o to w tym chodzi to x i y mozna zrobic
    > statycznymi i osiagnie sie efekt ze wszystko ok chyba ze
    > chodzi o cos innego/wiecej

    to nie zadziała. Co się stanie w tym przypadku
    jeśli a i b będą static?
    (jakieś pseudo C, mam nadzieję, że zrozumiałe):

    funkcja funkcjaOut(int a, int b)
    {
    return funkcjaIn(int x) {
    return a * x + b;
    }
    }

    funkcja1 = funkcjaOut(1 2);

    funkcja2 = funkcjaOut(-2 5);

    i rysujemy sobie wykres dwu funkcji:

    for i = -10; i <= 10; i++ {
    plot(funkcja1(i));
    plot(funkcja2(i));
    }


    > dalej nie rozumiem w jakich wypadkach to moze sie jakos specjalnie
    > przydac (moze sa jakies wypadki ale dla mnie to osobliwie nietypowe,

    Korzystanie z tego jest naturalne, kiedy język udostępnia odpowiednie
    mechanizmy...

    > (musialbym sie zastanowic) chyab ze ta funkcja jest wstawiona jedna
    > w druga dla picu i mozna je traktowac jak rownolegle ktore chca
    > po prostu operowac na tych wspoldzielonych statikach




  • 24. Data: 2011-10-16 20:19:19
    Temat: Re: lambda i clojures
    Od: Bronek Kozicki <b...@s...net>

    On 16/10/2011 13:24, f...@g...SKASUJ-TO.pl wrote:
    > nadal nie rozumiem tego cholerstwa, cos takirgo jak
    > z tym licznikiem mozna zrobic na statycznych zmiennych
    > wewnatrz funkcji, nie wiem jaka jest roznica miedzy tym
    > co moznazrobic na tych zm statycznych a tym czego nie mozna
    > zrobic i potrzebne sa te closures i wogole do czego

    różnica jest taka że licznik statyczny jest zainicjowany raz i już,
    czyli może "pochwycić" tylko jeden kontekst. Closure pochwyci nowy
    kontekst za każdym razem gdy jest utworzone, ale zachowa go przy każdym
    wykonaniu. To jest tak jakbyś sobie doczepił do wskaźnika na funkcję
    wskaźnik na stos (jaki był w momencie utworzenia tego wskaźnika).


    B.


  • 25. Data: 2011-10-17 04:38:26
    Temat: Re: lambda i clojures
    Od: Maciej Pilichowski <P...@g...com>

    On Sun, 16 Oct 2011 05:25:53 +0000 (UTC), " "
    <f...@g...SKASUJ-TO.pl> wrote:

    >a czym sie rozni od zwyklej normalnej 'niepowiazanej' funkcji?

    W C masz cos takiego jak funkcje (globalne jakby nie patrzec) i
    zmienne globalne, zgadza sie? I zmienne globalne sa dostepne do uzytku
    wewnatrz funkcji.


    No to zejdz o stopien nizej i dostaniesz funkcje lokalne (okreslone
    wewnatrz innej funkcji) oraz zmienne lokalne. Rzecz w tym, ze jesli te
    wewnetrzna funkcje gdzies zapamietasz, to ona z kolei bedzie pamietac
    wartosc zmiennych lokalnych funkcji matki, nawet jesli dostep do tych
    samych zmiennych juz jest dawno niemozliwy.

    Func<double,bool> foo()
    {
    int x = 5;
    return (int y) => y<x;
    }

    Funkcja matka tutaj to foo i tworzy ona metode, ktora wiaze sie ze
    zmienna (lokalna) x. Po wygenerowaniu funkcji (czyli zakonczeniu
    dzialania foo) nadal wygenerowana funkcja bedzie widziala wartosc x.

    milego dnia, hej
    --
    Teraz JOW! -- wybory 2011: http://terazjow.pl

    Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy.
    http://www.garaz.pol.pl/


  • 26. Data: 2011-10-17 05:17:38
    Temat: Re: lambda i clojures
    Od: p...@p...onet.pl

    > On 16/10/2011 13:24, f...@g...SKASUJ-TO.pl wrote:

    > > nadal nie rozumiem tego cholerstwa, cos takirgo jak
    > > z tym licznikiem mozna zrobic na statycznych zmiennych
    > > wewnatrz funkcji, nie wiem jaka jest roznica miedzy tym
    > > co moznazrobic na tych zm statycznych a tym czego nie mozna
    > > zrobic i potrzebne sa te closures i wogole  do czego
    >
    > różnica jest taka że licznik statyczny jest zainicjowany raz i już,
    > czyli może "pochwycić" tylko jeden kontekst. Closure pochwyci nowy
    > kontekst za każdym razem gdy jest utworzone, ale zachowa go przy każdym
    > wykonaniu. To jest tak jakbyś sobie doczepił do wskaźnika na funkcję
    > wskaźnik na stos (jaki był w momencie utworzenia tego wskaźnika).
    >
    >
    > B.

    ok, traza rozumiem, jesli wlasnie o to chodzi, tj o mozliwosc robienia sobie
    instancji 'szablonowych' funkcji

    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 27. Data: 2011-10-17 05:25:33
    Temat: Re: lambda i clojures
    Od: p...@p...onet.pl


    > to nie zadziała. Co się stanie w tym przypadku
    > jeśli a i b będą static?
    > (jakieś pseudo C, mam nadzieję, że zrozumiałe):
    >
    > funkcja funkcjaOut(int a, int b)
    > {
    >    return funkcjaIn(int x) {
    > return a * x + b;
    >    }
    > }
    >
    > funkcja1 = funkcjaOut(1 2);
    >
    > funkcja2 = funkcjaOut(-2 5);
    >
    > i rysujemy sobie wykres dwu funkcji:
    >
    > for i = -10; i <= 10; i++ {
    >   plot(funkcja1(i));
    >   plot(funkcja2(i));
    > }
    >
    >
    >

    ok, dobry przyklad, zwlaszcza o ile o to wlasnie chodzi w tych closures
    a mozliwe ze wlasnie o to, to powyzej mozna by zrobic tak by dzialalo
    zalezy co robilby ten return na funkcji (zdaje sie ze wlasnie to robia
    implementacje owych closures), ja ew predzej bym sie zastanowil czy
    to warto miec wbudowane - ale odloze to rozwazanie do przyszlosci,
    a chwilowo pozostane w zadowoleniu ze teraz wiecej kojarze o co chodzi,
    tnx, pzdr




    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 28. Data: 2011-10-17 06:32:28
    Temat: Re: lambda i clojures
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2011-10-17 07:17, p...@p...onet.pl pisze:
    >> On 16/10/2011 13:24, f...@g...SKASUJ-TO.pl wrote:
    >
    >>> nadal nie rozumiem tego cholerstwa, cos takirgo jak
    >>> z tym licznikiem mozna zrobic na statycznych zmiennych
    >>> wewnatrz funkcji, nie wiem jaka jest roznica miedzy tym
    >>> co moznazrobic na tych zm statycznych a tym czego nie mozna
    >>> zrobic i potrzebne sa te closures i wogole do czego
    >>
    >> różnica jest taka że licznik statyczny jest zainicjowany raz i już,
    >> czyli może "pochwycić" tylko jeden kontekst. Closure pochwyci nowy
    >> kontekst za każdym razem gdy jest utworzone, ale zachowa go przy każdym
    >> wykonaniu. To jest tak jakbyś sobie doczepił do wskaźnika na funkcję
    >> wskaźnik na stos (jaki był w momencie utworzenia tego wskaźnika).
    >>
    >>
    >> B.
    >
    > ok, traza rozumiem, jesli wlasnie o to chodzi, tj o mozliwosc robienia sobie
    > instancji 'szablonowych' funkcji
    >

    Możesz też pomyśleć o tym od strony języków obiektowych:
    (w uproszczeniu) funkcja tworząca closure to konstruktor, przechwycony
    stan zmiennych to stan obiektu, utworzona i zwrócona funkcja to metoda,
    która na tym stanie operuje.


  • 29. Data: 2011-10-17 07:18:25
    Temat: Re: lambda i clojures
    Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>

    On 2011-10-16, Piotr Chamera <p...@p...onet.pl> wrote:
    > W dniu 2011-10-16 16:17, Stachu 'Dozzie' K. pisze:
    >> On 2011-10-16, Piotr Chamera<p...@p...onet.pl> wrote:
    >> [...]
    >>> Ok mamy jedną funkcję, która korzysta ze statycznego licznika.
    >>> Teraz potrzebujemy dwie funkcje, które korzystają z tego samego
    >>> licznika - jedna go zwiększa, druga zmniejsza. W C to będzie
    >>> wyglądało... ?
    >>
    >> Da się. Wydziela się takie funkcje do osobnej jednostki kompilacji,
    >> a tam umieszcza zmienną static.
    >>
    >> Na prostych przykładach nie wyjaśnisz firowi jaka jest różnica między
    >> domknięciem i funkcją z zestawem statycznych zmiennych, a bardziej
    >> skomplikowanych nie pojmie, bo jest za głupi. W ogóle nie rozumiem czemu
    >> z nim dyskutujesz.
    >
    > Słyszałem kiedyś coś takiego ,,nie ma głupich uczniów, są tylko
    > nieodpowiedni nauczyciele" - próbuję siebie w roli nauczyciela :)

    To poćwicz najpierw z kimś pojętniejszym :)

    > A tak serio - siedzę nad nudną robotą i od czasu do czasu muszę sobie
    > zrobić przerwę...

    OK, to mi w zupełności wystarczy za powód. Sam czasem tak robię.

    > Programistą nie jestem, robię to tylko hobbystycznie,
    > C nie znam prawie wcale, ostatnio w wolnym czasie uczę się Lispu
    > i pomyślałem, że może spróbuję podać jakiś prosty przykład a dyskusja
    > się rozwinie i pojawią się jakieś ciekawsze przykłady albo nowe dla
    > mnie zagadnienia.

    Ciekawszym byłby przykład, gdy z funkcji zwracasz funkcję (czy zestaw
    funkcji), która coś robi ze swoim własnym licznikiem. Żeby dało się mieć
    cztery czy pięć liczników naraz. To już by pokazywało dlaczego
    domknięcia są silniejszym mechanizmem niż zmienne static, czy to lokalne
    (jedna na wszystkie wywołania funkcji), czy to globalne (zmienna ukryta
    i niedostępna dla innych jednostek kompilacji).

    --
    Secunia non olet.
    Stanislaw Klekot


  • 30. Data: 2011-10-17 07:20:50
    Temat: Re: lambda i clojures
    Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>

    On 2011-10-16, Piotr Chamera <p...@p...onet.pl> wrote:
    [...]
    >> dalej nie rozumiem w jakich wypadkach to moze sie jakos specjalnie
    >> przydac (moze sa jakies wypadki ale dla mnie to osobliwie nietypowe,
    >
    > Korzystanie z tego jest naturalne, kiedy język udostępnia odpowiednie
    > mechanizmy...

    Ano jest naturalne. W Perlu używałem domknięć przez całkiem długi czas
    w ogóle nie wiedząc co to jest domknięcie.

    --
    Secunia non olet.
    Stanislaw Klekot

strony : 1 . 2 . [ 3 ]


Szukaj w grupach

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: