Portál AbcLinuxu, 8. května 2025 21:34

Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
15.2.2008 00:34 wumpus | skóre: 2
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Odpovědět | Sbalit | Link | Blokovat | Admin
IMHO česky má seznam hlavu a tělo.
15.2.2008 08:42 Xerces
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Taky už jsem slyšel používat termín ocas, ale příjde mi to moc sexistický. Ocas maj jenom správní chlapy.
Milan Vít avatar 15.2.2008 15:15 Milan Vít | skóre: 23 | blog: about:linux | Orlová
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Tak správní, že se musí psát s tvrdým? :-)
„There is no dark side of the Moon really… as a matter of fact it's all dark.“
15.2.2008 18:04 Xerces
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Přesně tak, pro ně totiž neplatí, že .... Ženy si hrály s tvrdým a chlapi šli domů z měkkým. Správní chlapy i domů chodí s tvrdým :-)
15.2.2008 18:04 Xerces
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
domů z <=> domů s
15.2.2008 00:55 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Odpovědět | Sbalit | Link | Blokovat | Admin
"Kostrukce let nám mnohdy pomůže, ale jsou situace, kdy je úroveň abstrakce, kterou poskytuje, příliš nízká, protože umožňuje pouze nahrazení konkrétními čísly. Pokud chceme nahrazovat obecným vzorcem, použijeme konstrukci lambda"
Přiznám se, že téhle pasáži moc nerozumím. Let není nic jiného než převlečená lambda. :-)
((lambda (jméno) (vzorec))
   (výraz))
je přesně totéž, co
(let ((jméno výraz))
   (vzorec))
Možná by bylo lépe zřejmé, co máš na mysli tou "nízkou úrovní abstrakce", kdybys lépe vysvětlil to "nahrazení konkrétními čísly". ;-)
Konstrukce let a lambda jsou velmi užitečné na úrovni výrazů, jenže nám nepomohou, pohybujeme-li se na úrovni celého programu. Pak nastupují na řadu procedury.
Tomu taky nerozumím. :-) To, co vytváří lambda, se také nazývá procedura. Tzv. top-level define forma
(define (jméno argumenty)
   (tělo_funkce))
obdobně prostou transformací vede na
(define jméno 
    (lambda (argumenty)
        (tělo_funkce)))
Tohle dokonce člověk najde přímo v R5RS.
Seznamy lze samozřejmě vnořovat, pak se vyhodnocují od toho nejhlouběji vnořeného.
Tohle taky nedává smysl. Seznamy se přeci nevyhodnocují. Nepleteš si to s formami? A nezmizely Ti někam odkazy na konci článku? :-) Růžový čumáček drží palce do dalšího schemování a doporučuje přečíst si Lambda Papery, RnRS a SICP, aby nedošlo k nedorozumění studenta s jazykem. :-)
Jak moc jsou ábíčkáři inteligentní? ;-)
15.2.2008 01:39 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Seznamy lze samozřejmě vnořovat, pak se vyhodnocují od toho nejhlouběji vnořeného.
co naplat, ony vyhodnocovat pri trose dobre vule jdou (eval (list '+ 1 2 3)), ale je to spis problem vadnosti celeho popisu a terminologie ;-] (btw. termin forma je lispovsky, r5rs tento termin nepouziva a pouziva misto toho jina zverstva, ale to je na uplne jinou diskuzi ;-])

pokud predpokladame vyhodnocovani z leva doprava (r5rs to nepredpoklada) pak v (+ (+ 1 2) (+ (+ 1 2) (+ 3 4))) vyraz (+ 3 4) bude vyhodnoceny jako jeden z poslednich.

cely ten clanek je takovy... jak bych to rekl... napsat clanek vyhodnocovani programu ve schemu, kde se termin symbol nebo s-vyraz nevyskytuje ani jednou a kdy termin ,,vyhodnocuje'' se vyskytuje prave jednou... je docela kumst.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.2.2008 07:26 nigol
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Souhlas. Jenom bych jeste doplnil, ze specialni forma define je trosku neco jineho, nez prirazeni hodnoty v klasickem smyslu, jak jsme u programovacim jazyku zvykli. Vytvari se tim nove prostredi, ve kterem se navaze na urcity symbol vyhodnoceni vyrazu. No a to ma zajimave dusledky, protoze s prostredim se daji delat psi kusy a s nim uzce souvisi i continuations, s kterymi se daji delat dalsi psi kusy (treba celkem jednoducha implementace multitaskingu) a doufam, ze se o techto tematech v nejakem budoucim pokracovani docteme.
15.2.2008 15:56 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
define zadne prostredi nevytvari. define navaze v aktualnim prostredi hodnotu na symbol. nic vic nic min. ke vzniku prostredi dochazi v momente ,,zavolani uzivatelske funkce''.
(define foo (lambda (x) (* x x)) ; zadne prostredi nevzniklo, jen na symbol,
                                      ; foo je navazana funkce, ktera v sobe drzi
                                      ; (ukazatel na) rodicovske prostredi
(foo 1) ; vzniklo nove prostredi, kde na hodnotu x je navazana jednicka
        ; a v tomto prostredi se vyhodnoti (* x x)
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
18.2.2008 06:55 nigol
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Dik za upresneni.
15.2.2008 07:41 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
A nezmizely Ti někam odkazy na konci článku?
Viz "Odkazy a zdroje".
15.2.2008 10:26 Ondrej 'SanTiago' Zajicek
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
> Seznamy se přeci nevyhodnocují.

Ale vyhodnocuji - podivej se na to s pohledu REPL, uzivatel zada (+ 1 2). Read to nacte jako seznam delky 3, obsahujici symbol a dve cisla. Pak prijde eval a tento seznam vyhodnoti.
15.2.2008 10:38 Ondrej 'SanTiago' Zajicek
Rozbalit Rozbalit vše Re: Výrazy a procedury ve Scheme
Konstrukce let a lambda jsou velmi užitečné na úrovni výrazů, jenže nám nepomohou, pohybujeme-li se na úrovni celého programu. Pak nastupují na řadu procedury.
Tomu taky nerozumím. :-) To, co vytváří lambda, se také nazývá procedura. Tzv. top-level define forma
Nehlede na to, ze konstrukce let a lambda je mozne pouzit i na top-level urovni a define i v 'zanorene' urovni (s drobnou odchylkou v semantice oproti top-level define).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.