Já ho třeba používám protože implementace Amulet (https://amulet.works/) je podobná Haskellu, umí nějaké ty zajímavé featury a kompiluje mi to do Lui. Žádná další zvláštní motivace v tom není.
Kompilace do Luy? Proč? Zrovna Lua mi pro tenhle účel přijde extrémně nevhodná. A s dokumentací na stránkách toho jazyka je to takové nijaké.
Asi nerozumím tvému příspěvku. Extrémně nevhodná na co?
Jako cílový jazyk kompilace. Síla Luy je IMO v tom, že je to jednoduchoučký jazyk s malinkým runtimem který se dá jednoduše embednout kamkoliv. Přijde mi trochu zvláštní mít mocný typový systém a v runtime všechny tyhle informace zahodit a všechno to nasypat do jedné univerzální hashmapy. To už by mi přišlo rozumnější, aby si Amulet zrovna interpretoval svůj AST než tohle.
Tohle kombinuje nevýhody z obou světů. Pro kompilaci potřebuje mocnou parní mlátičku a v runtime platí za nevyužitou flexibility Luy.
Obávám se, že je to přesně naopak.
V runtime žádné typy nepotřebuju, snad tam ani žádné nejsou (dobře, to není tak docela pravda, ale to je fuk). Mocný typový systém potřebuju jen na začátku, při překladu. Pak už jej prakticky nevyužiju - maximálně se mi tam hodí typy jako tagy při nějakém switchi, což je přesně to co ten Amulet dělá. V runtime se mi naopak hodí to, že tam není žádné zbytečné smetí a může optimalizovat po svém (LuaJIT etc, i když to jsem ještě nezkoušel).
Ale to není úplně Ocaml, ne?
Ne? Já bych řekl že jo. Ale i kdybych se mýlil, tak co?
Kdyby ses mýlil, tak bys nedával přímou odpověď na otázku, kterou jsem položil. Pokud si vzpomínám, tak Ocaml má poměrně mnoho jazykových vlastností (OOP, moduly a functory...), které "A simple, functional programming language in the ML tradition" (Amulet) mít všechny nebude. Tudíž beru, že používáš "nějaký jazyk z rodiny ML", akorát to holt asi není to samé co Ocaml.
Ok, přesvědčili jste mě, není to OCaml. Ale opravdu je mi to jedno. Já vlastně původně jen nechtěl vytahovat, že používám zrovna takovou obskurní věc, a tak jsem to zařadil do nejbližší kategorie která mě napadla. Netrefil jsem se. Přiznávám vinu v plném rozsahu.