Apa yang dimaksud "monotonisitas" dalam konteks sifat berubah-ubah

8

Saya membaca Bahasa Pemrograman Karat dan menemukan bagian berikut:

Ingatlah bahwa menulis ke struct bukanlah operasi atom, dan banyak fungsi seperti vec.push()dapat merealokasi secara internal dan menyebabkan perilaku yang tidak aman, sehingga bahkan monotonitas mungkin tidak cukup untuk membenarkan UnsafeCell

Itu muncul begitu saja dalam buku ini dan saya kesulitan online untuk menemukan apa artinya dalam konteks ini. Terlalu banyak informasi tentang konsep "monotonisitas" fungsi matematika, yang sudah saya ketahui tetapi tampaknya tidak terlalu membantu.

Saya sepertinya hanya menemukan artikel ini yang membicarakannya.

Sekarang, selain menghormati kesetaraan dengan cara yang jelas, saya juga memasukkan ketentuan bahwa program fungsional harus menghormati monotonitas pengamatan. Apa yang saya maksud dengan ini? Pasti sekali Anda telah mengamati sesuatu pada suatu titik waktu, maka itu tidak akan berhenti menjadi bukti di masa depan. Ini analog dengan properti monotonitas dalam semantik Kripke atau Beth.

Namun ini juga cukup abstrak dan saya tidak yakin itu berbicara tentang hal yang sama.

xji
sumber

Jawaban:

5

Penulis tampaknya menggunakan konsep (umum) yang sama "monotonisitas" seperti dalam matematika murni.

Dengan menggunakan contoh a vector, jika ukuran beberapa instance tertentu vectoradalah monoton, maka akan masuk akal untuk mengasumsikan bahwa lokasi memori dari setiap pushelemen yang sebelumnya tidak akan dimodifikasi, dan dengan demikian aman untuk secara langsung mengubah nilainya. dari elemen itu tanpa harus menyinkronkan dengan operasi vectorselanjutnya push.

Asumsi ini tampaknya masuk akal untuk banyak alasan yang sama mengapa tampaknya masuk akal untuk mengasumsikan bahwa lokasi memori elemen yang sebelumnya didorong ke tumpukan (non-bundar, berbasis array, tidak terikat) yang ukurannya meningkat dengan ketat tidak akan terpengaruh oleh masa depan pushoperasi. Ini berbeda dengan tumpukan di mana keduanya pushdan popoperasi dipanggil, dan lokasi memori elemen yang sebelumnya didorong dapat "dihapus" oleh popoperasi, dan dengan demikian tersedia untuk ditugaskan sekali lagi (yaitu dimodifikasi) oleh pushoperasi selanjutnya .

Poin penulis adalah bahwa asumsi ini tidak benar, karena bahkan dalam struktur data yang ukurannya meningkat secara ketat, penyisipan di masa depan dapat memengaruhi elemen yang disisipkan sebelumnya dengan memicu realokasi internal dari beberapa jenis yang berbeda dari efek "logis" dari penyisipan. .

Travis
sumber
BAIK. Sepertinya saya terlalu memikirkannya. Sepertinya itu bukan teori PL yang mendalam. Tebak caranya tiba-tiba disajikan dalam teks tanpa banyak konteks menggosok saya dengan cara yang salah haha.
xji