Ya, tentu saja, tetapi bergantung pada seberapa besar Anda ingin pembatasan diterapkan, jarak tempuh Anda mungkin berbeda.
Hanya saja, jangan bermutasi
Anda cukup menghindari setf
dan semua tempat mesin. Jika Anda harus menggunakan tabel hash atau vektor, Anda akan banyak menyalin, namun untuk banyak aplikasi, overhead pengumpulan sampah masih dapat dikelola. Di banyak tempat, Anda dapat menggunakan alists atau plists, yang dapat ditangani hampir seperti struktur data fungsional. Beberapa utilitas berguna ada di alexandria
, e. G. copy-hash-table
, yang memiliki argumen key
untuk benar-benar melakukan sesuatu seperti map-hash-table
hipotetis. Semua kebaikan fungsional lainnya, seperti fungsi tingkat tinggi, map
, reduce
, remove
dll. tersedia dalam banyak rasa. Selain itu, kasus penggunaan tertentu dapat diselesaikan secara deklaratif di loop
.
Ada juga perpustakaan yang membuat gaya ini lebih mudah secara eksplisit, misalnya. G. modf.
Ini bisa membawa Anda cukup jauh. Saya menganggapnya mudah untuk melihat di mana Anda melanggar transparansi referensial dan menghindarinya.
Gunakan struktur data fungsional
Ada FSet, yang memberi Anda banyak struktur data fungsional, dan ada sycamore, yang memberikan lebih banyak lagi.
Gunakan transduser
SERIES muncul di CLtL2 pada tahun 1990 dan hampir menjadi standar pada tahun 1994. Ada juga taps, yang menambahkan beberapa fungsi berguna.
Merenungkan
Secara pribadi, saya tidak terlalu keras lagi mengejar kemurnian. Terkadang, memutasi suatu tempat dalam satu lingkaran lebih mudah dipahami daripada melakukan beberapa pengikatan dalam luasan yang berbeda. Saya hanya membatasi mutasi; ini mirip dengan konsep kepemilikan data. Namun, saya ingin memiliki kemurnian dalam skala yang lebih besar, baik di memori maupun di disk, misalnya. G. log tambahan saja, database (bknr.datastore).
person
Svante
schedule
26.01.2019