Sto pianificando di migliorare le mie conoscenze su Clojure e gli algoritmi allo stesso tempo implementando alcune strutture dati conosciute in Clojure (ad esempio liste collegate, skip list, filtro bloom, ecc.). Tuttavia, ho appreso di recente che questa potrebbe non essere una buona idea.
[... T]he fact that getting an optimized solution is so difficult should be a sign that's somethings wrong. In the ~2 years that I've been writing Clojure, I've never written my own basic structure. In most other languages, it's a very common exercise. In Clojure though, the lower level implementation of the structures used are best tucked away somewhere, and it's much more common to just use the basic structures of the language.
Questo è stato anche il modo in cui mi sono sentito mentre implementavo la lista collegata. Certo, lo so dato che questo è solo un esercizio e non un codice di produzione, non importa se il codice è ottimale o no, oppure esiste già una soluzione integrata o meno. D'altro canto, non vorrei perdere tempo in qualcosa che non ha senso.
So che questa domanda potrebbe essere contrassegnata come basata sull'opinione pubblica e quindi senza una risposta chiara. Tuttavia, immagino di aver chiesto: "L'assemblaggio è la scelta giusta per implementare la parte di back-end di una web-app media?". Anche se questa seconda domanda è anche "basata sull'opinione pubblica", non posso immaginare che la risposta sia "sì", (beh, tranne forse per un caso limite molto molto molto specifico). Ecco perché spero che anche la mia domanda abbia una risposta chiara si / no.