eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Makra w jezyku Scheme
Ilość wypowiedzi w tym wątku: 39

  • 11. Data: 2014-11-09 20:35:48
    Temat: Re: Makra w jezyku Scheme
    Od: firr <p...@g...com>

    W dniu niedziela, 9 listopada 2014 20:28:15 UTC+1 użytkownik g...@g...com
    napisał:
    > W dniu niedziela, 9 listopada 2014 19:52:10 UTC+1 użytkownik firr napisał:
    >
    > > 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?)
    >
    > jezeli idzie o reprezentacje list/drzew, to to jest w ogolnosci bardzo
    > ciekawe zagadnienie. pare lat temu Guy Steele mial wyklad na ten
    > temat w kontekscie paralelizacji obliczen: http://vimeo.com/6624203
    >
    > z cala pewnoscia z operatywnego punktu widzenia podzial na glowe i ogon
    > jest bardzo wygodny, choc uzywanie list laczonych jest w ogolnosci dosc
    > niewydajne (np. ze wzgledu na liniowy czas dostepu do elementow)
    >
    > w przypadku makr nie ma to zazwyczaj szczegolnego znaczenia, bo one sa i tak
    > wykonywane w trakcie kompilacji wyrazenia (choc oczywiscie ktos moglby stworzyc
    > jakies makro, ktore dzialaloby skrajnie niewydajnie)
    >
    > > - 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?
    >
    > nie. symbole sa w lispie jednym z podstawowych typow danych, podobnie jak
    > np. stringi w javascripcie.
    >
    > dlatego kiedy piszesz
    >
    > : x
    >
    > to ewaluator probuje podstawic wartosc zwiazana z symbolem (albo zglasza
    > blad, jezeli symbol jest niezwiazany), za to jesli piszesz
    >
    > : (quote x)
    >
    > czy tez
    >
    > : 'x
    >
    > to otrzymujesz symbol "x"
    >
    > podobnie, kiedy piszesz
    >
    > (+ 2 3)
    >
    > to interpreter ewaluuje to wyrazenie do liczby 5, ale jesli napiszesz
    >
    > '(+ 2 3)
    >
    > to wartoscia tego wyrazenia bedzie lista, ktorej pierwszym
    > elementem jest symbol "+", drugim liczba 2, a trzecim liczba 3
    >
    >
    > przy okazji ciekawostka: o ile wyrazenia '2 i '3 dadza w wyniku
    > liczby 2 i 3 (czyli zachowaja sie tak samo, ja wyrazenia 2 i 3),
    > o tyle ''2 i ''3 dadza w wyniku listy
    >
    > (quote 2)
    >
    > i
    >
    > (quote 3)
    >
    > (czyli listy, ktorych pierwszym elementem jest symbol "quote", a drugim
    > liczba)
    >
    > Analogicznie, ''x da w wyniku liste
    >
    > (quote x)

    mimo twojej zauwazalnie ponadprzecietnej inteligencji powiem ci ze tutor to z ciebie
    jest slaby - mozesz odpowiedziec mi na jedno pytanie zwiazane z quote? - rozumiem ze
    to co jest produkowane przez quote (co moze byc pojedyncza lista czy moze byc cala
    wielka galezia kodu?) dalej jest konsumowane przez jakis tam pozostaly kod, bo bez
    tej wlasnie konsumpcji bylby syntaz error?
    -?
    tak pytam zeby zrozumiec jak to dziala


  • 12. Data: 2014-11-09 20:52:49
    Temat: Re: Makra w jezyku Scheme
    Od: A.L. <a...@a...com>

    On Sun, 9 Nov 2014 11:08:50 -0800 (PST), g...@g...com wrote:

    >
    >Pisalem skrypt w emacsie zgodnie ze specyfikacja org. To taka ciut
    >sformalizowana specyfikacja plikow tekstowych (czesto uzywana np. do
    >formatowania plikow tekstowych na githubie). Tryb emacsa daje mozliwosc
    >generowania z tego LaTeXa (przyznam, ze pdfa wyprodukowalem na szybko,
    >nie bardzo wglebiajac sie w rozne opcje)

    Publikacje w LaTeXu najlepiej pisac w LaTeXu. Jest pare ogolnie
    dostepnych przetwornikow z LaTeXu do HTML

    A.L.


  • 13. Data: 2014-11-09 21:51:16
    Temat: Re: Makra w jezyku Scheme
    Od: g...@g...com

    W dniu niedziela, 9 listopada 2014 20:35:49 UTC+1 użytkownik firr napisał:
    >
    > mimo twojej zauwazalnie ponadprzecietnej inteligencji powiem ci ze tutor to z
    ciebie jest slaby

    dziekuje, staram sie :)

    > - mozesz odpowiedziec mi na jedno pytanie zwiazane z quote? - rozumiem ze to co
    jest produkowane przez quote (co moze byc pojedyncza lista czy moze byc cala wielka
    galezia kodu?) dalej jest konsumowane przez jakis tam pozostaly kod, bo bez tej
    wlasnie konsumpcji bylby syntaz error?

    Nie. To, co jest produkowane, to jest po prostu symbol albo lista,
    i moze byc dalej przetwarzane przez program tak, jak kazda inna lista.
    Nie musi byc przez nic konsumowane -- moze byc np. zachowane do zmiennej,
    przekazywane do funkcji, albo zwyczajnie ignorowane.

    Dlatego zamiast pisac

    (list 1 2 3)

    mozna rownie dobrze napisac

    '(1 2 3)

    > -?
    > tak pytam zeby zrozumiec jak to dziala

    :) spoks
    rzeczywiscie, operator quote nie ma swojego odpowiednika w zadnym
    innym znanym mi jezyku programowania poza lispami (choc slyszalem,
    ze w jezykach elixir i julia sa jakies odpowiedniki, ale nigdy
    w to glebiej nie wnikalem), dlatego ta koncepcja moze byc
    na poczatku nieco trudna do zrozumienia

    czesto zdarzalo mi sie slyszec w tym kontekscie mantre o tym, ze
    "kod to dane"


  • 14. Data: 2014-11-09 22:05:01
    Temat: Re: Makra w jezyku Scheme
    Od: g...@g...com

    W dniu niedziela, 9 listopada 2014 20:35:49 UTC+1 użytkownik firr napisał:
    > tak pytam zeby zrozumiec jak to dziala

    pomyslalem sobie, ze moze Ci ulatwic, jesli na biezaco bedziesz mogl
    sobie testowac rozne wyrazenia.

    tutaj jest interpreter scheme'a w javascripcie:

    http://blackboard.biwascheme.org/

    (chociaz nie ma w nim wszystkiego, to jego funkcjonalnosc wystarczy
    do uruchomienia dotychczasowych przykladow)


  • 15. Data: 2014-11-09 22:51:08
    Temat: Re: Makra w jezyku Scheme
    Od: "Jordan Szubert" <u...@j...us.to>

    Dnia 09-11-2014 o 22:05:01 <g...@g...com> napisał(a):

    > W dniu niedziela, 9 listopada 2014 20:35:49 UTC+1 użytkownik firr
    > napisał:
    >> tak pytam zeby zrozumiec jak to dziala
    >
    > pomyslalem sobie, ze moze Ci ulatwic, jesli na biezaco bedziesz mogl
    > sobie testowac rozne wyrazenia.
    >
    > tutaj jest interpreter scheme'a w javascripcie:
    >
    > http://blackboard.biwascheme.org/
    >
    > (chociaz nie ma w nim wszystkiego, to jego funkcjonalnosc wystarczy
    > do uruchomienia dotychczasowych przykladow)

    a na http://www.biwascheme.org/ jest REPL, co może być wygodniejsze

    --
    Jordan Szubert


  • 16. Data: 2014-11-09 22:58:08
    Temat: Re: Makra w jezyku Scheme
    Od: g...@g...com

    W dniu niedziela, 9 listopada 2014 22:51:11 UTC+1 użytkownik Jordan Szubert napisał:

    > > tutaj jest interpreter scheme'a w javascripcie:
    > >
    > > http://blackboard.biwascheme.org/
    > >
    > > (chociaz nie ma w nim wszystkiego, to jego funkcjonalnosc wystarczy
    > > do uruchomienia dotychczasowych przykladow)
    >
    > a na http://www.biwascheme.org/ jest REPL, co może być wygodniejsze

    rzeczywiscie do nauki podstaw REPL moze byc lepszy, jednak zdecydowalem
    sie dac linka do blackboarda, bo z pobieznych testow wyniknelo, ze
    interpreter z REPLem nie obsluguje makr, a interpreter w blackboardzie
    obsluguje define-macro


  • 17. Data: 2014-11-09 23:36:54
    Temat: Re: Makra w jezyku Scheme
    Od: firr <p...@g...com>

    no dobra peostsze pytanie ;o
    co sie stanie jesli w takim czyms

    (+ (+ 1 2 3) (+ 1 2 3 4)) z drugiego
    zrobisz 'quote' ? wydaje mi sie ze
    to bedzie syntax (runtime?) error
    o tyle wydawalo mi sie ze te quoty moga
    byc tylko produkowane w jakichs kontekstach gdzie otaczajacy kod przyjmuje na wejsciu
    wlasnie jakies tam kody (bo czym jest ta zawartosc quote? kodem chyba?)


  • 18. Data: 2014-11-10 01:06:02
    Temat: Re: Makra w jezyku Scheme
    Od: g...@g...com

    W dniu niedziela, 9 listopada 2014 23:36:54 UTC+1 użytkownik firr napisał:
    > no dobra peostsze pytanie ;o
    > co sie stanie jesli w takim czyms
    >
    > (+ (+ 1 2 3) (+ 1 2 3 4)) z drugiego
    > zrobisz 'quote' ?

    tzn. chodzi o to, co sie stanie, gdy napiszemy
    (+ (+ 1 2 3) '(+ 1 2 3 4))?

    wtedy dostaniemy type error, bo nie mozna dodac liczby do listy.

    ale gdybysmy napisali

    (append '(+ 1 2 3) '(+ 1 2 3 4))

    [gdzie "append" to funkcja ktora laczy listy]
    to dostalibysmy sensowny wynik

    (+ 1 2 3 + 1 2 3 4)

    analogicznie, nie mozemy jednak uzyc funkcji "append" na liczbach.
    wywolanie

    (append 1 2)

    rowniez spowoduje blad typu

    > wydaje mi sie ze
    > to bedzie syntax (runtime?) error
    > o tyle wydawalo mi sie ze te quoty moga
    > byc tylko produkowane w jakichs kontekstach
    > gdzie otaczajacy kod przyjmuje na wejsciu wlasnie
    > jakies tam kody (bo czym jest ta zawartosc quote? kodem chyba?)

    tzn. na te rzecz mozna patrzec dwojako.
    z jednej strony mozna powiedziec, ze kiedy piszesz
    '(+ 2 3), to faktycznie mozna widziec (+ 2 3) jako
    kod. Jednak mozna tez spojrzec na te kwestie na odwrot,
    mianowicie tak, ze (+ 2 3) jest lista, ktora zostaje
    ewaluowana.

    zachecam zebys sprawdzil tego repla, bo wtedy bedziesz mogl
    na biezaco testowac rozne hipotezy


  • 19. Data: 2014-11-10 08:53:30
    Temat: Re: Makra w jezyku Scheme
    Od: firr <p...@g...com>

    W dniu poniedziałek, 10 listopada 2014 01:06:04 UTC+1 użytkownik g...@g...com
    napisał:
    > W dniu niedziela, 9 listopada 2014 23:36:54 UTC+1 użytkownik firr napisał:
    > > no dobra peostsze pytanie ;o
    > > co sie stanie jesli w takim czyms
    > >
    > > (+ (+ 1 2 3) (+ 1 2 3 4)) z drugiego
    > > zrobisz 'quote' ?
    >
    > tzn. chodzi o to, co sie stanie, gdy napiszemy
    > (+ (+ 1 2 3) '(+ 1 2 3 4))?
    >
    > wtedy dostaniemy type error, bo nie mozna dodac liczby do listy.
    >
    > ale gdybysmy napisali
    >
    > (append '(+ 1 2 3) '(+ 1 2 3 4))
    >
    > [gdzie "append" to funkcja ktora laczy listy]
    > to dostalibysmy sensowny wynik
    >
    > (+ 1 2 3 + 1 2 3 4)
    >
    > analogicznie, nie mozemy jednak uzyc funkcji "append" na liczbach.
    > wywolanie
    >
    > (append 1 2)
    >
    > rowniez spowoduje blad typu
    >
    > > wydaje mi sie ze
    > > to bedzie syntax (runtime?) error
    > > o tyle wydawalo mi sie ze te quoty moga
    > > byc tylko produkowane w jakichs kontekstach
    > > gdzie otaczajacy kod przyjmuje na wejsciu wlasnie
    > > jakies tam kody (bo czym jest ta zawartosc quote? kodem chyba?)
    >
    > tzn. na te rzecz mozna patrzec dwojako.
    > z jednej strony mozna powiedziec, ze kiedy piszesz
    > '(+ 2 3), to faktycznie mozna widziec (+ 2 3) jako
    > kod. Jednak mozna tez spojrzec na te kwestie na odwrot,
    > mianowicie tak, ze (+ 2 3) jest lista, ktora zostaje
    > ewaluowana.
    >
    > zachecam zebys sprawdzil tego repla, bo wtedy bedziesz mogl
    > na biezaco testowac rozne hipotezy

    chyba nie mam sily (ostatnio na nic nie mam sily) bo scheme sie interesuje tylko
    przygodnie - aczkolwiek i w ten sposob tanim kosztem mozna sie troche wdrożyc w
    temat, bo np teraz mi sie troche rozjasnilo

    mozesz powiedziec mmi moze jeszcze

    > (append '(+ 1 2 3) '(+ 1 2 3 4))

    > (+ 1 2 3 + 1 2 3 4)


    1) tutaj dodajemy dwa cytaty czy wynik nie powinien byc tez cytatem, czy tu na pewno
    to jest nie cytat tylko takie wyrazenie?
    2) co dalej mozna zrobic z czyms takim

    > (+ 1 2 3 + 1 2 3 4)

    ? to jak rozumiem sie chyba nie moze wykonac?


  • 20. Data: 2014-11-10 09:15:03
    Temat: Re: Makra w jezyku Scheme
    Od: g...@g...com

    W dniu poniedziałek, 10 listopada 2014 08:53:33 UTC+1 użytkownik firr napisał:

    > > zachecam zebys sprawdzil tego repla, bo wtedy bedziesz mogl
    > > na biezaco testowac rozne hipotezy
    >
    > chyba nie mam sily (ostatnio na nic nie mam sily) bo scheme sie interesuje tylko
    przygodnie - aczkolwiek i w ten sposob tanim kosztem mozna sie troche wdrożyc w
    temat, bo np teraz mi sie troche rozjasnilo

    to jak juz uznasz, ze wszystko rozumiesz, to bym Cie jeszcze poprosil,
    zebys opowiedzial o tym w taki sposob, dzieki ktoremu Twoim zdaniem
    zrozumialbys to szybciej, bo moze wtedy i ja sie czegos naucze odnosnie
    tego, jak nalezy wyjasniac takie rzeczy :)

    > mozesz powiedziec mmi moze jeszcze
    >
    > > (append '(+ 1 2 3) '(+ 1 2 3 4))
    >
    > > (+ 1 2 3 + 1 2 3 4)
    >
    >
    > 1) tutaj dodajemy dwa cytaty czy wynik nie powinien byc tez cytatem, czy tu na
    pewno to jest nie cytat tylko takie wyrazenie?

    nie
    cytat to jest pewne wyrazenie, natomiast wynik cytowania to w tym
    przypadku po prostu lista. Ewaluator albo zjada jednego quote'a
    i wypuwa dane, albo dokonuje ewaluacji wyrazenia zgodnie z normalnymi
    regulami, jesli nie ma quote'a.

    funkcja poniekad komplementarna jest funkcja "eval". w pewnym uproszczeniu
    zapis (eval '(+ 1 2)) jest rownowazny zapisowi (+ 1 2). eval to funkcja
    ktora interpretuje swoj argument jako kod w lispie.

    analogicznie, zapis (eval ''(+ 1 2)) odpowiada zapisowi '(+ 1 2)

    (podobna funkcja "eval" jest np. w javascripcie, tylko ze tam
    ewaluuje sie stringi, natomiast w lispie -- struktury danych,
    tj. drzewa symboli. dlatego funkcja "eval" w javascripcie musi
    dodatkowo przeparsowac kod, a w lispie nie)

    > 2) co dalej mozna zrobic z czyms takim
    >
    > > (+ 1 2 3 + 1 2 3 4)
    >
    > ? to jak rozumiem sie chyba nie moze wykonac?

    nie moze, bo nie mozna dodac funkcji do liczby.
    mozna z tym robic to wszystko, co mozna zrobic
    z kazda inna lista, np.

    (filter number? '(+ 1 2 3 + 1 2 3 4))
    ===> (1 2 3 1 2 3 4)

    (filter symbol? '(+ 1 2 3 + 1 2 3 4))
    ===> (+ +)

    oczywiscie przyklad jest bardzo abstrakcyjny

strony : 1 . [ 2 ] . 3 . 4


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: