eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingZapytanie › Re: Wam wszytskim odbilo z tym Lispem :)
  • Data: 2012-07-26 14:16:21
    Temat: Re: Wam wszytskim odbilo z tym Lispem :)
    Od: Piotr Chamera <p...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2012-07-26 11:18, Adam Przybyla pisze:
    > Piotr Chamera <p...@p...onet.pl> wrote:
    >> W dniu 2012-07-26 10:29, AK pisze:
    >>> Użytkownik "Piotr Chamera" <p...@p...onet.pl> napisał:
    >>>> (setq r
    >>>> (let* ((a 8)
    >>>> (b (+ a 7))
    >>>> (c 12)
    >>>> (d 2))
    >>>> (* (+ a b) (- c d))))
    ...
    >>>> A teraz może podaj odpowiednik tego kodu w Pythonie,
    >>>> bo to poniżej to nie jest to samo:
    >>>>
    >>>> a = 8
    >>>> b = a + 7
    >>>> c = 12
    >>>> d = 2
    >>>> r = a + b * c + d
    >>>
    >>> A dlaczegoz to Kolega zgubil nawiasy i (pomylil znak, rozumiem ze typo) ?
    >>> Przeciez to wbrew matematyce
    >>> Winno byc: r = (a + b) * (c - d)
    >>
    >> oczywiście...
    >> wklepałem to na szybko, żeby pokazać przykład, w którym
    >> a,b,c,d są ,,globalne" - nie wiem, jak to zapisać w Pythonie tak, aby
    >> nie były widoczne poza zasięgiem, w którym są potrzebne i żeby nadal
    >> było czytelnie.
    > ... wpakowac to do procedury;-) Z powazaniem
    > Adam Przybyla

    Rozumiem, że to są różne języki i pisze się w nich całkiem inaczej...
    Pytam po prostu z ciekawości, bo AK podał jako przykład czegoś
    trudnego (czy nieintuicyjnego) dla początkujących konstrukcję,
    która nie ma chyba dokładnego odpowiednika w żadnym z popularniejszych
    języków programowania a zinterpretowałem to tak, że AK uważa że w innym
    języku (np. Pythonie, który został wymieniony wcześniej) będzie
    to bardziej czytelne / intuicyjne.

    Sam coś tam kiedyś liznąłem Pythona ale nie potrafię znaleźć
    satysfakcjonującego odpowiednika, przy założeniu, że
    po obliczeniu r z wykorzystaniem a,b,c,d chcemy pozostawić
    tylko widoczność r.

    można tak
    >>> def wzor():
    a = 8
    b = a + 7
    c = 12
    d = 2
    return (a + b) * (c - d)

    >>> r = wzor()

    co jednak zostawia nam w przestrzeni globalnej ,,wzor"



    tak jak poniżej (co byłoby chyba najbliższym odpowiednikiem) się nie da
    (chyba, że można jakoś zapisać ,,wielowyrażeniową" lambdę):

    r = (lambda:
    a = 8
    b = a + 7
    c = 12
    d = 2
    return (a + b) * (c - d))()






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: