ซีแมนทิกส์ของโปรแกรมเป็นรูปแบบของพฤติกรรมซึ่งเหมือนกับโมเดลทางวิทยาศาสตร์ใด ๆ จะไม่สนใจลักษณะที่คุณไม่ต้องการศึกษา
แบบจำลองที่มีรายละเอียดสูงของการดำเนินการของโปรแกรมจะจำลองพฤติกรรมทางกายภาพของคอมพิวเตอร์ที่ดำเนินการดังกล่าวรวมถึงเวลาในการดำเนินการการใช้พลังงานการแผ่รังสีคลื่นแม่เหล็กไฟฟ้าและอื่น ๆ อย่างไรก็ตามบางครั้งพวกเขาก็ทำเรื่องสำคัญ: โมเดลที่มีประโยชน์ของเครื่องบินอัตโนมัติต้องมีข้อมูลรันไทม์, โมเดลที่มีประโยชน์ของความปลอดภัยของบัตรเครดิตต้องรวมถึงคลื่นแม่เหล็กไฟฟ้า, ...
ในความหมายทั่วไปผลข้างเคียงเช่นเวลาและการใช้พลังงานจะถูกละเว้น แม้ว่าในการตั้งค่าทางโลกที่คุณพิมพ์นิพจน์ที่ Haskell interpreter prompt การพิมพ์ผลลัพธ์เป็นผลข้างเคียง (หากคุณพยายามพิมพ์วัตถุที่ไม่มีที่สิ้นสุด หากล่าม Haskell มีหน่วยความจำไม่เพียงพอนี่เป็นผลข้างเคียงที่สังเกตเห็นได้ในแบบจำลอง "โลกแห่งความจริง" แต่ไม่ใช่ในรูปแบบอุดมคติของ Haskell ที่อนุญาตการคำนวณได้อย่างมีประสิทธิภาพ
สังเกตผลข้างเคียงที่เป็นหนึ่งซึ่งเป็นแบบจำลองในความหมาย ในภาษาทั่วไปของการเขียนโปรแกรมรูปแบบการใช้หน่วยความจำไม่ได้เป็นแบบจำลองดังนั้นการคำนวณที่ต้องใช้พื้นที่จัดเก็บ 1TB อาจเป็นจริงถึงแม้ว่าคุณพยายามเรียกใช้บนพีซีของคุณ
ผลข้างเคียงที่ไม่สามารถสังเกตได้อีกประเภทหนึ่งก็คือสิ่งที่อยู่ภายในฟังก์ชั่น นี่คือสิ่งที่ฉันคิดว่า semanticists ส่วนใหญ่จะคิดอย่างไรเมื่อพูดถึงผลข้างเคียงที่ไม่สามารถสังเกตได้ พิจารณาการคำนวณที่ใช้ข้อมูลที่ไม่แน่นอนภายใน แต่ไม่เปิดเผยข้อมูลที่ไม่แน่นอนนี้กับส่วนอื่น ๆ ของโปรแกรม ตัวอย่างเช่นฟังก์ชั่นการเรียงลำดับรายการที่สร้างอาร์เรย์ที่มีองค์ประกอบเดียวกันกับรายการเรียงลำดับอาร์เรย์ในตำแหน่งและส่งกลับรายการที่มีองค์ประกอบเป็นอาร์เรย์ในลำดับสุดท้ายของพวกเขา: รูปแบบความหมายของ subexpressions ของฟังก์ชั่นนี้แสดงด้าน ผลกระทบ (การปรับเปลี่ยนอาร์เรย์) แต่ฟังก์ชั่นของตัวเองไม่มีผลข้างเคียงภายนอกดังนั้นมันจึงบริสุทธิ์
สำหรับตัวอย่างที่ละเอียดยิ่งขึ้นให้พิจารณาฟังก์ชันที่เขียนข้อมูลบางอย่างไปยังไฟล์ชั่วคราวและล้างข้อมูลหลังจากนั้น ในความหมายที่มีที่ว่างเพียงพอสำหรับไฟล์ชั่วคราวและโปรแกรมไม่แชร์ไฟล์ชั่วคราวฟังก์ชั่นจะไม่มีผลข้างเคียง ไฟล์ชั่วคราวทำหน้าที่เป็นหน่วยความจำเสริมที่ใช้โดยฟังก์ชั่น ในความหมายที่คำนึงถึงเงื่อนไขของระบบไฟล์ฟังก์ชั่นนี้มีผลข้างเคียง - มันอาจล้มเหลวเนื่องจากสถานการณ์ภายนอก ในซีแมนทิกส์ที่อนุญาตให้เครื่องพังฟังก์ชันจะมีผลข้างเคียง: หากเกิดข้อผิดพลาดระหว่างการทำงานของฟังก์ชันไฟล์ชั่วคราวอาจถูกทิ้งไว้ข้างหลัง ในความหมายที่อนุญาตให้โปรแกรมที่เรียกใช้งานพร้อมกันเพื่อดูและอาจแก้ไขไฟล์ชั่วคราวฟังก์ชันมีผลข้างเคียง