eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programminggenerowanie programow › Re: generowanie programow
  • X-Received: by 10.140.83.212 with SMTP id j78mr293081qgd.3.1390093345813; Sat, 18 Jan
    2014 17:02:25 -0800 (PST)
    X-Received: by 10.140.83.212 with SMTP id j78mr293081qgd.3.1390093345813; Sat, 18 Jan
    2014 17:02:25 -0800 (PST)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!news.unit0.net!news.glorb.com!p15no21838946qaj.0!news-out.
    google.com!fv6ni4421qab.1!nntp.google.com!6no17509780qao.1!postnews.google.com!
    glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sat, 18 Jan 2014 17:02:25 -0800 (PST)
    In-Reply-To: <3...@4...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=89.67.189.218;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 89.67.189.218
    References: <4...@g...com>
    <p...@4...com>
    <1...@g...com>
    <2...@g...com>
    <3...@4...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <1...@g...com>
    Subject: Re: generowanie programow
    From: g...@g...com
    Injection-Date: Sun, 19 Jan 2014 01:02:25 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:204988
    [ ukryj nagłówki ]

    W dniu sobota, 18 stycznia 2014 23:36:27 UTC+1 użytkownik A. L. napisał:

    > >Mam nadzieje, ze to odpowiada na Twoje pytanie.
    >
    > Tak.
    >
    > To co napiales pozyzej to komplenta bzdura

    W jakim sensie jest to kompletna bzdura?
    Albo: co z tego, co napisalem, jest kompletna bzdura
    i dlaczego?
    Rzecz w tym, ze odpowiedzi w rodzaju takich, ktore
    mi udzielasz (np. "to jest kompletna bzdura", albo
    "Gosciu, czy ty kiedys programwoales profesjonalnie,
    czy tylk oze sluchu?") nie sa dla mnie szczegolnie
    informatywne, i jezeli masz odpowiadac w taki sposob,
    to rownie dobrze mozesz darowac sobie wypowiedz.

    Nie interesuja mnie stwierdzenia, za ktorymi nie
    stoja jakies wyjasnienia czy argumenty, poniewaz
    cel wypowiadania takich stwierdzen raczej nie jest
    merytoryczny, tylko erystyczny.

    Dla mnie sens tego, co napisalem, wydaje sie
    dosc oczywisty. Moze warto by to bylo zilustrowac
    przykladem. Zeby nie szukac daleko, posluze sie tym
    pochodzacym od autorow prezentacji.

    Funkcyjna, rekurencyjna definicja funkcji "append"
    w lispie, sklejajaca ze soba dwie listy, wyglada
    nastepujaco

    (define (append l s)
    (cond
    ((null? l) s)
    (else (cons (car l) (append (cdr l) s)))))

    na przyklad
    (append '(1 2 3) '(4 5)) zwroci (1 2 3 4 5)

    Funkcje te mozna przepisac do systemu programowania
    w logice "kanren" wedlug zarysowanej powyzej metody,
    uzyskujac nastepujacy kod:

    (define (appendo l s out)
    (conde
    ((== '() l) (== s out))
    ((fresh (a d res)
    (== `(,a . ,d) l)
    (== `(,a . ,res) out)
    (appendo d s res)))))

    gdzie == jest operatorem unifikacji, fresh sluzy
    do wprowadzania nowych zmiennych, zas conde jest
    kanrenowym odpowiednikiem operatora cond.

    Nie przedstawiam tutaj szczegolowo semantyki
    kanrena, bo po pierwsze sam jej dobrze nie znam,
    a po drugie caly proces jest wyjasniony w prezentacji.

    Istotne jest to, ze majac tak zdefiniowana funkcje,
    mozna uruchomic ja w kanrenowym unifikatorze, w
    nastepujace sposoby:

    (run* (q) (appendo '(a b c) '(d e) q))
    zwroci
    (a b c d e)

    ale rowniez mozna unifikowac "od tylu":
    (run* (q) (appendo '(a b c) q '(a b c d e)))
    da nam
    (d e)

    itd.

    Skladnia moze nie jest tak elegancka, jak
    w prologu, poniewaz unifikacja jest dokonywana
    w jawny sposob, ale dla osoby znajacej podstawy
    lispa sens powinien byc mniej wiecej do
    uchwycenia, nawet jesli moze miec klopot
    ze szczegolami.

    [...] przepisac program napisany
    > > >w stylu funkcyjnym na "program w logice"
    > > >(poprzez dopisanie dodatkowego argumentu,
    > > >majacego reprezentowac wynik),
    >
    > Chodzi o to w jaki sposob "dopisanie argumentu"
    > nagle powoduje ze mamy "program w logice"

    OK, rozumiem, o co chodzi. Jezeli idzie o to
    wyjasnienie, to oczywiscie dopisanie dodatkowego
    argumentu nie jest warunkiem dostatecznym, ale jest
    (dla przyjetej przez autorow metody) warunkiem
    koniecznym. Nie opisywalem tego procesu w calosci,
    poniewaz to jest zawarte w prezentacji, zas moim
    celem bylo jedynie zarysowanie tego, co tam sie
    dzieje, zeby grupowicze mogli ocenic, czy temat
    jest dla nich interesujacy, i ewentualnie obejrzec.

    Jezeli dla Ciebie nie jest, to ja nie mam z tym
    problemu.

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: