Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Funkce v programovacím jazyku Lua

Radovan Garabík aura:48
31. 3. 2009 11:19 Nový

pascal

celé vlákno
Je to už nejaká doba čo som programoval v Pascale, ale nejasne si spomínam, že forward bolo treba použiť len pre dvojitú rekurziu (t.j. funkcia A volá funkciu B a tá volá funkciu A...), ináč stačila obyčajná deklarácia.
ondra.novacisko.cz
ondra.novacisko.cz (neregistrovaný)
31. 3. 2009 13:50 Nový

Re: pascal

celé vlákno
Forward nebylo nic jiného, než prototyp v C, jinými slovy deklarace funkce bez těla.
Radovan Garabík aura:48
31. 3. 2009 13:53 Nový

Re: pascal

celé vlákno
Presne tak - a preto ho bolo treba uvádzať len v prípade dvojitej rekurzie (lebo prekladač bol jednoprechodový a musel poznať všetky typy).

Podľa mňa ani v C netreba pri (jednoduchej) rekurzii žiadne zvláštne deklarácie.
Šimon Tóth aura:50
31. 3. 2009 18:59 Nový

Re: pascal

celé vlákno
V Cecku je mozne prototypy uplne vynechavat jelikoz nema pretezovani funkci.
Ksl
Ksl (neregistrovaný)
31. 3. 2009 19:21 Nový

Re: pascal

celé vlákno
Hodně štěstí při volání funkcí, které vrací float. :-p Nehledě na to, že podle C99 takový program není "program v Céčku". :-]
Šimon Tóth aura:50
1. 4. 2009 11:52 Nový

Re: pascal

celé vlákno
Muzete mi ukazat ktera sekce standardu C99 konkretne zakazuje tohle:
float fce2();
float fce1(int a, int b, double c) { return fce2(1,2,3.0); }
float fce2(int a, int b, double c) { return fce1(1,2,3.0); }
Ksl
Ksl (neregistrovaný)
1. 4. 2009 12:14 Nový

Re: pascal

celé vlákno
To je správně (pomineme-li nepříliš užitečné chování), ovšem to je program s prototypem, kdežto Vy jste psal, že "v Cecku je mozne prototypy uplne vynechavat". :-)

Jsem ovšem zvědav, jak kompilátor podle Vás bez prototypu (například v headeru) pozná, že funkce z jiné kompilační jednotky, kterou právě kompilovaná jednotka používá, vrací float a nikoli int.
Šimon Tóth aura:50
1. 4. 2009 12:27 Nový

Re: pascal

celé vlákno
Staci se podivat o cem je tohle cele vlakno a nereagovat jenom na jeden prispevek.

Pokud mluvite o kompletnim vynechani prototypu funkce, tak to fungovalo pouze K&R Cecku, od ANSI C to je zakazana vlastnost.

To co funkce vraci samozrejme kompilator nepozna (stejny duvod proc nejde delat pretezovani dle navratoveho typu v C++). Jedine co je schopen udelat je provest implicitni deklaraci podle parametru se kterymi byla funkce zavolana, coz samozrejme muze byt spatne.
Ksl
Ksl (neregistrovaný)
1. 4. 2009 12:54 Nový

Re: pascal

celé vlákno
Zapojení sdělení do kontextu je sice pěkná věc, ale tohle není filosofie ani literatura, na technickém serveru je poměrně dobře možné vyjadřovat se tak, aby to nikdo nepochopil špatně, neb objektivní pravda, kterou sdělujeme, je jen jedna, a tudíž zde nevidím důvod pro lenost.

Já teda nevím, študovanej nejsem, pro Vás "prototypy je možné úplně vynechávat" možná znamená něco jiného než "nikdy je není třeba psát" nebo "kdykoli se bez nich obejdu". Pro mě ale ne; a lidi, co Cčko třeba tak dokonale neumějí (a dalo by se argumentovat, že jakákoli sdělení tohoto typu budou určena především (!) jim), může taková věta dokonale zmást.

Pokud ho "nevytrhnu z kontextu" já, udělá to někdo jiný, to se klidně vsaďte. Třeba student před zkouškou. A když si to spojím s tím, co tu jednou Mikuláš Patočka psal o tom, jaké neuvěřitelné novoty studenti občas sdělují pedagogům u zkoušek, viděl bych od pedagoga takové prohlášení, jaké jste tu udělal, ne jako lenost, ale jako holou nezodpovědnost.
Ksl
Ksl (neregistrovaný)
31. 3. 2009 19:24 Nový

Re: pascal

celé vlákno
(A upřímně doufám, že tohle chudáky studenty neučíte. :} Už aby to klonování začalo fungovat pořádně a všechny školy si konečně mohly dovolit učit prváky klonovanými Herouty.)
uživatel si přál zůstat v anonymitě
4. 4. 2009 17:29 Nový

Re: pascal

celé vlákno
lol
hyperion
hyperion (neregistrovaný)
1. 4. 2009 9:01 Nový

Re: pascal

celé vlákno
Hele, Apríl je až dnes :-)
Ksl
Ksl (neregistrovaný)
31. 3. 2009 13:19 Nový

Tail cally

celé vlákno
Ony jsou to spíš úplné tail cally než jen tail rekurze. A v kterýchže situacích kompilátor nedokáže tail cally správně převést?
hyperion
hyperion (neregistrovaný)
6. 5. 2009 23:35 Nový

Re: Tail cally

celé vlákno
A neni to v dusledku to same, resp. neni tail rekurze implementovana pomoci tail callu? Ja si btw ze Scheme pamatuju, ze tam byly nejake docela prisne podminky na to, kdy se tail call mohl provest - v podstate zalezelo (celkem logicky) na tvaru rekurzivniho volani, snad jen primitivni rekurze se prevadela na tail cally.
akillah.trillah
akillah.trillah (neregistrovaný) ---.cuzk.cz
9. 9. 2009 20:05 Nový

Re: Tail cally

celé vlákno

kdyby sem snad jeste nekdo zabloudil: NENI.

tail rekurze je pouze jednim z pripadu tail-call optimalizace, a ono rozbaleni na smycku je pouze prirovnani.

lepe receno rozbalenim na smycku je pouzitelne pouze pro tail rekurzi.

tail call eliminace (optimalizace) je obecna transformace uplatnitelna v pripade ze funkce vraci hodnotu primo ziskanou volanim jine funkce. pak je mozny parametry rovnou nacpat na spravny misto pouzit skok misto vytvareni dalsiho ramce. takze tail call eliminace muze „zarolovat“ vzajemnou rekurzi nekolika funkci nebo i treba jen nekolik nerekurzivnich vnorenych volani do jumpu a teprve posledni funkce v rade provede onen kyzeny return.

Zasílat nově přidané příspěvky e-mailem