Funkcionální programování a mainstream

hop

Re:Funkcionální programování a mainstream
« Odpověď #75 kdy: 27. 07. 2017, 14:30:57 »
PS: Koukám - lexikální uzávěry a lambda funkce... no to jsou určitě užitečné věci, ale dá se obejít i bez nich.

lexikální uzávěry mohou nahradit mutabilitu. Nekonečnou sekvenci můžete implementovat objektem držícím stav, nebo vracením lambda funkcí.


Kit

Re:Funkcionální programování a mainstream
« Odpověď #76 kdy: 27. 07. 2017, 15:15:19 »
PS: Koukám - lexikální uzávěry a lambda funkce... no to jsou určitě užitečné věci, ale dá se obejít i bez nich.

lexikální uzávěry mohou nahradit mutabilitu. Nekonečnou sekvenci můžete implementovat objektem držícím stav, nebo vracením lambda funkcí.

Obojí se dá velmi snadno implementovat i v OO jazycích a používám to zcela běžně.

Často je výhodné dělat objekty immutable, lépe se s nimi pracuje.

hop

Re:Funkcionální programování a mainstream
« Odpověď #77 kdy: 27. 07. 2017, 15:38:42 »
Obojí se dá velmi snadno implementovat i v OO jazycích a používám to zcela běžně.

Často je výhodné dělat objekty immutable, lépe se s nimi pracuje.

ano, můžete si implementovat něco jako uzávěr ručně.

Aoidhghean

Re:Funkcionální programování a mainstream
« Odpověď #78 kdy: 06. 08. 2017, 19:02:35 »
[Schvalne jsem ted sahl do policky pro tri nahodne vybrane knizky o funkcionalnim programovani On Lisp, PAIP a Compiling with Continuations, abych se podival, kolikrat se tam zminuje teorie kategorii. Cislo ti radsi ani nebudu rikat, mohl by se ti zhroutit cely tvuj svet.

Teorie kategorií je jako bible pro funkcionální programátory. Málokdo jí rozumí, ale všichni ji prezentují jako dar z nebes.
Důležitá je ovšem ta hrstka, která tomu opravdu rozumí (a posouvá obor dál).

Kit

Re:Funkcionální programování a mainstream
« Odpověď #79 kdy: 06. 08. 2017, 19:33:17 »
Taky bych rekl, ze hlavni vlastnosti FP je pouzivani funkci v matematickem smyslu, nikoli pouzivani funkci vyssiho radu; to druhe ma ostatne i OOP (delegaty a dalsi vzory) a klasicke strukturovane programovani (odkaz na funkci).

dost důležité jsou lexikální uzávěry a lambda funkce. V čistě imperativních jazycích jako c jen obtížně implementujete líné vyhodnocování, nekonečné posloupnost apod.

V OOP jsou nahrazeny objekty, takže zas tak nepostradatelné nejsou.