Ich habe kürzlich große Codestücke überarbeitet und durch Linq-Abfragen ersetzt.
Entfernen der sprachlichen Verzerrung - Linq besteht im Wesentlichen aus einer Reihe von Map / Filter- und Reduce-Operationen, die mit einer Datensequenz ausgeführt werden.
Das brachte mich zum Nachdenken, wie weit ich das theoretisch bringen könnte. Wäre es mir möglich, die gesamte Codebasis in eine Reihe (oder sogar eine einzige) von Map / Filter- und Reduce-Operationen umzuschreiben?
Leider werde ich dafür bezahlt, nützliche Dinge zu tun, so dass ich nicht viel weiter experimentieren konnte, aber ich kann mir keine Codestruktur vorstellen, die nicht als solche neu strukturiert werden könnte. Nebeneffekt-Code kann über Monaden behandelt werden. Auch die Ausgabe besteht im Wesentlichen darin, Speicheradressen auf Bildschirmadressen abzubilden.
Gibt es etwas, das (theoretisch) nicht als Linq-Abfrage umgeschrieben werden kann?
my_list.map(_ignored => a copy of my_list)
, scheint der Platzbedarf eines solchen Programms durch ein Polynom begrenzt zu sein (abhängig von der Programmlänge). Dann könnte eine solche Sprache sicherlich keine Probleme berechnen, die nicht in PSPACE sind. Da jedoch viele Probleme in PSPACE als unlösbar angesehen werden, ganz zu schweigen von größeren Klassen, ist dies möglicherweise keine sehr schwerwiegende Einschränkung.