หนึ่งในหลักของการเขียนโปรแกรมฟังก์ชั่นคือการใช้ฟังก์ชั่นบริสุทธิ์ ฟังก์ชั่น Pure เป็นฟังก์ชันที่ปราศจากผลข้างเคียงและโปร่งใสอ้างอิง
Gettersไม่โปร่งใสในการอ้างอิง - หาก Setter ถูกเรียกระหว่างการเรียกไปยัง Getter ค่าส่งคืนของ Getter จะเปลี่ยนแม้ว่าพารามิเตอร์จะไม่มี (โดยทั่วไปจะไม่มีพารามิเตอร์)
Settersสร้างผลข้างเคียง - การเรียก Setter โดยทั่วไปจะจัดการกับค่าที่ไม่ใช่ค่าส่งคืน (อันที่จริงแล้วโดยทั่วไปแล้ว Setter จะไม่ส่งคืนค่าใด ๆ )
ฉันรู้ว่าในสกาล่าเราแค่ยอมรับความจริงที่ว่าเรากำลังผสานสองกระบวนทัศน์ (เชิงหน้าที่และเชิงวัตถุ) และใช้ getters / setters ตามที่เราต้องการในภาษาเช่น Java
ในภาษาอย่าง Haskell (ซึ่งฉันไม่คล่องแคล่ว แต่ฉันบอกว่าถือเป็นภาษาที่ใช้งานได้จริง "บริสุทธิ์") ฉันแค่อยากรู้อยากเห็นว่าคุณจะจำลองคุณสมบัติของวัตถุเช่น Getters นั้นมีความโปร่งใสและ Setters ได้อย่างไร ผลข้างเคียงฟรีหรือไม่
วิธีการแก้ปัญหาจะส่งกลับสำเนาของวัตถุที่ setter ถูกเรียกเมื่อเป็นค่าส่งคืนของ setter และสำเนานี้มีการเปลี่ยนแปลงค่าทรัพย์สิน?