Když už tu je článek o F#, dám odkaz na zajímavou knížku o funkcionálním doménovém modelování, kde se používá F#: https://books.google.com/books/about/Domain_Modeling_Made_Functional.html?id=qA9QDwAAQBAJ
Ten jazyk je v této oblasti trochu zvláštní volba, protože zas až tak funkcionální není.
No ja neviem, F# má byť podľa dostupných zdrojov v prvom rade funkcionálny a až potom všetko ostatné. Prečo teda až tak funkcionálny nie je?
Čo sa týka modelovania domén, autor knihy v tom má očividne absolútne jasno. Má na tú tému veľa prednášok, myslím, aj nejaká séria na tú tému existuje a potom jeho stránky, kde to ešte rozvíja.
Využíva samozrejme typový systém a všetky tie vychytávky okolo, aby to bolo stručné, popisovalo to pre doménu platné dáta a stavy a protestovalo pri pokuse písať neplatné.
Sila typového systému je podľa mňa charakteristika, ktorá neurčuje, či je jazyk funkcionálny alebo nie je. Aký typový systém majú napríklad Lisp, Scheme, Racket alebo Elixir? A sú to funkcionálne jazyky alebo nie sú?
Inak chápem. Pokiaľ sa ale bavíme o modelovaní domény, kde sa toho zúčastní aj odborník na doménu, tak je otázka, či jednoduchší typový systém nie je skôr výhoda ako nevýhoda. Zvlášť keď ide o podnikové aplikácie a nie o vedecké a keď odborník na doménu nie je matematik a nestretol sa s "kombináciou závislostných a lineárnych typov".
A nad rámec toho chápem aj snahu mať formálne overiteľný program napísaný v jednom jazyku, len je otázka, či to nie je za cenu výrazného zúženia okruhu ľudí, ktorí tomu budú rozumieť a či overenie bežnými formálnymi metódami nebude nakoniec prístupnejšie.
Ale to už je asi skôr iba filozofická úvaha...
Súhlas. Pokročilá práca s datovými typmi a funkcionálne programovanie sú dve rôzne veci.
Ešte by som doplnil, že je ošemetné hovoriť o jazyku, že je lepší alebo horší ako ten druhý. Je jazyk s prokročilými typmi lepší ako F#, hoci nemá prakticky žiadne knižnice? K jazyku patrí aj jeho tooling, dokumentácia a množina jeho knižníc.
Taký Golang má len zlomok možností, ktoré poskytujú funkcionálne jazyky, ale tie sa mu v jeho doméne (napr. terminálové aplikácie) nevyrovnajú.
DDD tlačím, kde se dá a je to rozumné. Bohužel hodně lidí si myslí, že je to nejaká enterprise ptákovina, protože původní příklady v knihách jsou v Java. U těhle jazyků jsem vždy trpěl, že nemají hodnotové typy (tuším že teď má konečně records [a Python dataclasses]).
ML jazyky mi přijdou na DDD ideální.
“Aký typový systém majú napríklad Lisp, Scheme, Racket alebo Elixir? A sú to funkcionálne jazyky alebo nie sú?” Elixír neznám, ale ty zbylé nejsou čistě funkcionální. Nicméně takto napsané to fakt nesouvisí a moje formulace byla neobratná. Jak už zaznělo, F# je kompromis mezi OOP a FP, a to celkem povedený z pohledu cílové skupiny. A jsem rád, že tu paralelně pojedou články o OCamlu, tento komparativní přístup by se mohl osvědčit.