ฉันเพิ่งได้รับ refactoring ชิ้นรหัสขนาดใหญ่และแทนที่ด้วยคำสั่ง Linq
การลบอคติภาษา - Linq เป็นชุดของแผนที่ / ตัวกรองและลดการดำเนินการที่ทำงานตามลำดับของข้อมูล
สิ่งนี้ทำให้ฉันคิดได้ว่าในทางทฤษฎีฉันจะสามารถทำสิ่งนี้ได้มากแค่ไหน ฉันจะสามารถเขียนรหัสพื้นฐานทั้งหมดลงในซีรีส์ใหม่ (หรือแม้แต่ชุดเดียว) ของแผนที่ / ตัวกรองและลดการทำงานได้ไหม
น่าเสียดายที่ฉันได้รับเงินเพื่อทำสิ่งที่มีประโยชน์ดังนั้นฉันจึงไม่สามารถทดลองได้มากขึ้น แต่ฉันไม่สามารถนึกถึงโครงสร้างโค้ดใด ๆ ที่ไม่สามารถจัดโครงสร้างใหม่ได้ โค้ดที่ได้รับผลข้างเคียงสามารถแก้ไขได้ผ่านทาง monads แม้กระทั่งเอาต์พุตก็คือการแม็พแอดเดรสหน่วยความจำไปยังที่อยู่ของหน้าจอ
มีอะไรที่ไม่สามารถเขียนใหม่ได้ (ในทางทฤษฎี) เป็นคำสั่ง Linq หรือไม่?
my_list.map(_ignored => a copy of my_list)
แต่ดูเหมือนว่าการใช้พื้นที่ของโปรแกรมดังกล่าวนั้น จำกัด ขอบเขตโดยพหุนามบางอย่าง (ขึ้นอยู่กับความยาวของโปรแกรม) ดังนั้นภาษาดังกล่าวจึงไม่สามารถคำนวณปัญหาที่ไม่ได้อยู่ใน PSPACE ได้อย่างแน่นอน อย่างไรก็ตามเนื่องจากปัญหาต่าง ๆ ใน PSPACE ถูกพิจารณาว่าเป็นสิ่งที่ขัดจังหวะไม่ได้ที่จะพูดอะไรกับคลาสที่ใหญ่กว่านี่อาจไม่ใช่ข้อ จำกัด ที่ร้ายแรงมาก