Funkcionální programátor

Re:Funkcionální programátor
« Odpověď #420 kdy: 11. 07. 2015, 23:58:06 »
Netvrdil som, že to musí byť robené práve cez monády, hoci aj tie môžu byť užitočné. Môžeme si predstaviť trebárs "CF-monádu" obsahujúcu C-čkovské filtre a spájanie monád by v takom prípade fungovalo ako rúra. (Snáď je táto myšlienka na linuxovom fóre dostatočne zrejmá aj bez ďalšieho popisu.)
K tomu pořád ale monády nepotřebuješ. Pokud je výstupem AST, je pořadí operací jasně dané (pokud ten "cílový jazyk" - tady C - není taky čistý). Monády jsou prostě způsob, jak řadit něco, co by jinak seřadit nebylo možno. Nic víc, nic míň.

Monády bys začal potřebovat, pokud bys chtěl tím céčkem něco načítat do toho FPP. Tam by ses dostal do toho problému, který monády řeší.

Áno, veď v pôvodnom odkaze bolo práve makro, išlo predsa o C/CPP. Tento príklad si však vtedy označil za zavádzajúci, a tak sme si to trochu poobjasňovali.
No jenže makra v CPP a makra v Elixiru nebo Lispu, jsou něco dost jiného :) A ta hlavní věc, co je odlišuje, je to, co jsem říkal: CPP není turingovsky úplný. V Elixiru nebo Lispu makrojazyk je úplný (protože je to sám Elixir nebo Lisp).


xyz

Re:Funkcionální programátor
« Odpověď #421 kdy: 13. 07. 2015, 16:37:29 »
Netvrdil som, že to musí byť robené práve cez monády, hoci aj tie môžu byť užitočné. Môžeme si predstaviť trebárs "CF-monádu" obsahujúcu C-čkovské filtre a spájanie monád by v takom prípade fungovalo ako rúra. (Snáď je táto myšlienka na linuxovom fóre dostatočne zrejmá aj bez ďalšieho popisu.)
K tomu pořád ale monády nepotřebuješ. Pokud je výstupem AST, je pořadí operací jasně dané (pokud ten "cílový jazyk" - tady C - není taky čistý).
Poradie operácií je dané vnútri samotnej dátovej štruktúry C, nie pri spájaní niekoľkých takýchto štruktúr, z ktorých každá môže mať vedľajšie efekty. Ale toto predsa nebolo pre môj príklad C/FPP podstatné.

Áno, veď v pôvodnom odkaze bolo práve makro, išlo predsa o C/CPP. Tento príklad si však vtedy označil za zavádzajúci, a tak sme si to trochu poobjasňovali.
No jenže makra v CPP a makra v Elixiru nebo Lispu, jsou něco dost jiného :)
Tak to je skutočný objav, ešteže si ma na to upozornil.  ;D

A ta hlavní věc, co je odlišuje, je to, co jsem říkal: CPP není turingovsky úplný.
A preto som ti hneď na začiatku napísal, že si namiesto CPP môžeš predstaviť nejaký čistý funkcionálny, turingovsky úplný predprocesor FPP.

V Elixiru nebo Lispu makrojazyk je úplný (protože je to sám Elixir nebo Lisp).
Lisp predsa nie je čistý, to by si tam mohol dať rovno m4. Viem síce, že to vieš, ale keď sa už upozorňujeme na samozrejmé veci...  :)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Funkcionální programátor
« Odpověď #422 kdy: 26. 08. 2015, 10:45:16 »
...debatě třeba o těch záměrných nedokonalostech typového systému Swiftu...

Kde je ta údajná nedokonalost?


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Funkcionální programátor
« Odpověď #424 kdy: 26. 08. 2015, 15:06:33 »
Kde je ta údajná nedokonalost?
http://forum.root.cz/index.php?topic=11417.msg134798#msg134798

To není nedokonalost, konzistentní kontrola typů z principu napsat nejde (pro turingovsky úplný jazyk, což Swift je).


Re:Funkcionální programátor
« Odpověď #425 kdy: 26. 08. 2015, 18:04:42 »
To není nedokonalost, konzistentní kontrola typů z principu napsat nejde (pro turingovsky úplný jazyk, což Swift je).
Můžeš to nějak doložit? Zaprvé v tom odkazovaném článku se píše opak, za druhé, umím si představit jazyk s jediným typem, který bude T.Ú., takže si neumím představit, proč by to nemělo být možný.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Funkcionální programátor
« Odpověď #426 kdy: 26. 08. 2015, 18:12:57 »
To není nedokonalost, konzistentní kontrola typů z principu napsat nejde (pro turingovsky úplný jazyk, což Swift je).
Můžeš to nějak doložit? Zaprvé v tom odkazovaném článku se píše opak, za druhé, umím si představit jazyk s jediným typem, který bude T.Ú., takže si neumím představit, proč by to nemělo být možný.

Ono to je celkem triviální pozorování. Viz zde: http://gallium.inria.fr/~remy/mpri/cours1.pdf

Re:Funkcionální programátor
« Odpověď #427 kdy: 26. 08. 2015, 18:29:52 »
Ono to je celkem triviální pozorování. Viz zde: http://gallium.inria.fr/~remy/mpri/cours1.pdf
Myslíš stranu 29 dole - "Soundness versus completeness"? Ten odstavec mi není jasný (co je "a program goes wrong"?) bez toho, abych to celý četl, což dělat nebudu :) ale není to náhodou jenom připomenutí Goedelovy vety o neuplnosti? Není to něco trochu jinýho, než o čem je řeč?

v

Re:Funkcionální programátor
« Odpověď #428 kdy: 26. 08. 2015, 19:43:17 »
Ono to je celkem triviální pozorování. Viz zde: http://gallium.inria.fr/~remy/mpri/cours1.pdf
Myslíš stranu 29 dole - "Soundness versus completeness"? Ten odstavec mi není jasný (co je "a program goes wrong"?) bez toho, abych to celý četl, což dělat nebudu :) ale není to náhodou jenom připomenutí Goedelovy vety o neuplnosti? Není to něco trochu jinýho, než o čem je řeč?
"a program goes wrong" může být IMHO třeba dělení nulou