Saya baru-baru ini refactoring potongan besar kode dan menggantinya dengan permintaan Linq.
Menghapus bias bahasa - Linq pada dasarnya adalah seperangkat Map / Filter dan Mengurangi operasi yang beroperasi pada urutan data.
Ini membuat saya berpikir, sejauh mana saya secara teoritis dapat mengambil ini. Apakah saya dapat menulis ulang seluruh basis kode menjadi serangkaian (atau bahkan satu) dari Map / Filter dan Mengurangi operasi.
Sayangnya saya dibayar untuk melakukan hal-hal yang berguna, jadi saya belum bisa bereksperimen lebih jauh, tetapi saya tidak bisa memikirkan struktur kode apa pun yang tidak dapat disusun ulang seperti itu. Kode efek samping dapat ditangani melalui monads .. Bahkan keluaran pada dasarnya memetakan alamat memori ke alamat layar.
Apakah ada sesuatu yang tidak bisa (secara teoritis) ditulis ulang sebagai permintaan Linq?
my_list.map(_ignored => a copy of my_list)
, sepertinya ruang penggunaan program seperti itu dibatasi oleh beberapa polinomial (tergantung pada panjang program). Maka bahasa seperti itu tentu tidak bisa menghitung masalah yang tidak ada di PSPACE. Namun, karena banyak masalah dalam PSPACE dianggap tidak dapat ditangani, untuk mengatakan tidak ada kelas yang lebih besar, ini mungkin bukan pembatasan yang sangat serius.