คำถามติดแท็ก strictness

6
รูปแบบปกติที่อ่อนแอคืออะไร
สิ่งที่ไม่อ่อนแอหัวหน้าฟอร์มปกติ (WHNF) หมายถึง? อะไรรูปแบบหัวปกติ (HNF) และปกติแบบฟอร์ม (NF) หมายถึง? รัฐในโลกแห่งความจริง Haskell : ฟังก์ชัน seq ที่คุ้นเคยประเมินค่านิพจน์กับสิ่งที่เราเรียกว่าเฮดฟอร์มปกติ (ตัวย่อ HNF) มันจะหยุดเมื่อถึงตัวสร้างชั้นนอกสุด ("หัว") สิ่งนี้แตกต่างจากฟอร์มปกติ (NF) ซึ่งนิพจน์ได้รับการประเมินอย่างสมบูรณ์ นอกจากนี้คุณยังจะได้ยินโปรแกรมเมอร์ Haskell อ้างถึงรูปแบบปกติของหัวอ่อน (WHNF) สำหรับข้อมูลปกติรูปแบบปกติของหัวที่อ่อนแอจะเหมือนกับรูปแบบปกติของหัว ความแตกต่างเกิดขึ้นสำหรับฟังก์ชั่นเท่านั้นและลึกซึ้งเกินกว่าที่จะเกี่ยวข้องกับเราที่นี่ ฉันได้อ่านทรัพยากรและคำจำกัดความ ( Haskell WikiและHaskell Mail ListและFree Dictionary ) แล้ว แต่ฉันไม่เข้าใจ บางคนสามารถยกตัวอย่างหรือให้คำจำกัดความของคนธรรมดาได้หรือไม่? ฉันเดาว่ามันจะคล้ายกับ: WHNF = thunk : thunk HNF = 0 : thunk NF …

8
ความเข้มงวดของ Haskell คืออะไร?
เราทุกคนรู้ (หรือควรรู้) ว่า Haskell ขี้เกียจไปโดยปริยาย ไม่มีสิ่งใดถูกประเมินจนกว่าจะต้องประเมิน ดังนั้นเมื่อต้องประเมินบางสิ่งบางอย่าง? มีจุดที่ต้องเข้มงวด Haskell ฉันเรียกสิ่งเหล่านี้ว่า "จุดเข้มงวด" แม้ว่าคำเฉพาะนี้จะไม่แพร่หลายอย่างที่คิด ตามฉัน: ลด (หรือการประเมินผล) ใน Haskell เพียงเกิดขึ้นในจุดที่เข้มงวด ดังนั้นคำถามคือสิ่งที่แม่นยำเป็น Haskell จุดเข้มงวด? สัญชาตญาณของฉันบอกว่าmain, seq/ รูปแบบปังจับคู่รูปแบบและใด ๆIOการดำเนินการดำเนินการผ่านทางmainเป็นประเด็นหลักเข้มงวด แต่ผมไม่ทราบจริงๆว่าทำไมฉันรู้ว่า (ถ้าไม่เรียกว่า "จุดเข้มงวด" จะเรียกว่าอะไร) ฉันคิดว่าคำตอบที่ดีจะรวมถึงการอภิปรายเกี่ยวกับ WHNF และอื่น ๆ ฉันยังคิดว่ามันอาจสัมผัสกับแคลคูลัสแลมบ์ดา แก้ไข: ความคิดเพิ่มเติมเกี่ยวกับคำถามนี้ ดังที่ฉันได้ไตร่ตรองเกี่ยวกับคำถามนี้แล้วฉันคิดว่าการเพิ่มคำจำกัดความของจุดเข้มงวดจะชัดเจนกว่า จุดเข้มงวดอาจมีบริบทที่แตกต่างกันและความลึกที่แตกต่างกัน(หรือความเข้มงวด) ย้อนกลับไปที่คำจำกัดความของฉันที่ว่า "การลดลงของ Haskell เกิดขึ้นที่จุดเข้มงวดเท่านั้น" ขอให้เราเพิ่มคำจำกัดความดังกล่าวในประโยคนี้: "จุดเข้มงวดจะเกิดขึ้นเมื่อมีการประเมินหรือลดบริบทโดยรอบเท่านั้น" ดังนั้นให้ฉันลองให้คุณเริ่มต้นด้วยคำตอบที่ฉันต้องการ mainเป็นจุดเข้มงวด ได้รับการกำหนดเป็นพิเศษให้เป็นจุดเข้มงวดหลักของบริบท: โปรแกรม เมื่อmainมีการประเมินบริบทของโปรแกรมจุดเข้มงวดของ main …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.