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

2
ฟังก์ชันใดที่ System F ไม่สามารถคำนวณได้
ในบทความวิกิพีเดียว่าด้วยทัวริงครบถ้วนระบุว่า: แคลคูลัสแลมบ์ดาที่ยังไม่พิมพ์คือทัวริงสมบูรณ์ แต่แคลคูลัสแลมบ์ดาที่พิมพ์ไว้จำนวนมากรวมถึง System F ไม่ใช่ ค่าของระบบที่พิมพ์นั้นขึ้นอยู่กับความสามารถในการแสดงโปรแกรมคอมพิวเตอร์ทั่วไปส่วนใหญ่ในขณะที่ตรวจพบข้อผิดพลาดเพิ่มเติม ตัวอย่างของฟังก์ชันที่คำนวณได้ทั้งหมดที่ไม่สามารถคำนวณได้โดยระบบ Fคืออะไร นอกจากนี้เนื่องจาก hindley-milner คือ: ข้อ จำกัด ของระบบ F เพราะความจริงที่ว่า: การตรวจสอบประเภทไม่สามารถอธิบายได้สำหรับตัวแปรสไตล์แกงกะหรี่ของ System F กล่าวคือสิ่งหนึ่งที่ขาดคำอธิบายประกอบการพิมพ์ที่ชัดเจน นี่หมายความว่าระบบแคลคูลัสแลมบ์ดาต้นแบบของฮินด์ลีย์ - มิลเนอร์นั้นไม่ได้สมบูรณ์เหมือนกันหรือไม่? หากเป็นจริงเนื่องจากhaskellนั้นได้รับการทำให้สมบูรณ์อย่างสมบูรณ์และเรารู้ว่ามันเป็นพื้นฐานคือแคลคูลัสแลมบ์ดาและระบบการพิมพ์ฮินด์ลีย์ - มิลเนอร์คุณสมบัติใดที่ไม่ได้ปรากฏในแคลคูลัสแลมบ์ดา

5
มีระบบตรวจสอบอย่างเป็นทางการที่มีคำอธิบายประกอบสำหรับภาษาการเขียนโปรแกรมที่ใช้งานได้จริงหรือไม่?
ACSL (ภาษาข้อกำหนดของ Ansi C) เป็นข้อกำหนดสำหรับรหัส C ซึ่งมีหมายเหตุประกอบเป็นความคิดเห็นพิเศษที่ช่วยให้สามารถตรวจสอบรหัส C ได้อย่างเป็นทางการ ฉันไม่ได้ดูมัน แต่ฉันคิดว่าวิธีการอย่างเป็นทางการที่ใช้ในการตรวจสอบACSLจะคล้ายกับ Hoare Logic สำหรับภาษาที่ใช้งานได้จริงเช่น Haskell ฉันไม่สามารถจินตนาการได้ว่าจะใช้วิธีการแบบใดในการยืนยันที่เป็นทางการ มีใครทำสิ่งที่คล้ายกับACSLแต่สำหรับภาษาทำงานบริสุทธิ์? ถ้าไม่ได้มีการวิจัยใด ๆ เกี่ยวกับการตรวจสอบอย่างเป็นทางการในรูปแบบคำอธิบายประกอบข้อมูลจำเพาะสำหรับภาษาทำงาน ฉันรู้ว่ามีการพิมพ์ที่ต้องพึ่งพาซึ่งรองรับหลายภาษา (Agda, Idris, ฯลฯ ... ) แต่ในการพิมพ์ที่ขึ้นอยู่กับ Haskell นั้นเป็นเรื่องยากโดยไม่ต้องใช้ตัวช่วยพิมพ์ (ไม่สามารถอ่านได้บ้าง) ด้วยความคิดนั้นและเนื่องจาก Haskell มีการสนับสนุนห้องสมุดที่ดีกว่า Agda และ Idris ฉันจึงเชื่อว่าระบบดังกล่าวสำหรับการตรวจสอบการทำงานอย่างเป็นทางการอาจมีประโยชน์ แต่ฉันไม่ทราบว่ามีการทำวิจัยนี้หรือไม่

1
เหตุใดภาษาการเขียนโปรแกรมที่ใช้งานได้จำเป็นต้องมีการรวบรวมขยะ
อะไรคือการหยุด ghc จากการแปล Haskell ไปเป็นภาษาการเขียนโปรแกรมที่ต่อกันเช่นตรรกะเชิงการรวมกันแล้วใช้การจัดสรรสแต็คสำหรับทุกสิ่ง ตามที่วิกิพีเดียการแปลจากแลมบ์ดาแคลคูลัสเป็นตรรกะเชิงตรรกะนั้นมีความสำคัญและภาษาการเขียนโปรแกรมที่ต่อกันสามารถพึ่งพากองซ้อนสำหรับการจัดสรรหน่วยความจำเพียงอย่างเดียว เป็นไปได้ไหมที่จะทำการแปลและกำจัดการเก็บขยะสำหรับภาษาเช่น Haskell และ ocaml มีข้อเสียในการทำเช่นนี้? แก้ไข: ย้ายมาที่นี่/programming/39440412/why-do-functional-programming-languages-require-garbage-collection

4
eta-equence สำหรับฟังก์ชั่นที่ใช้งานร่วมกันได้กับการทำงาน seq ของ Haskell หรือไม่?
แทรก: สมมติว่า (\x -> ⊥) = ⊥ :: A -> BETA-เท่าเทียมเรามี พิสูจน์: ⊥ = (\x -> ⊥ x)โดยกทพ. เทียบเท่าและ(\x -> ⊥ x) = (\x -> ⊥)โดยการลดภายใต้แลมบ์ดา รายงาน Haskell 2010 ส่วน 6.2 ระบุseqฟังก์ชันด้วยสองสมการ: seq :: a -> b -> b seq ⊥ b = ⊥ seq ab = b, ถ้า a …

2
อะไรคือความสัมพันธ์ระหว่าง Alternative, MonadPlus (LeftCatch) และ MonadPlus (LeftDistributive)?
การติดตามตัวอย่างของ Monad ซึ่งเป็นทางเลือก แต่ไม่ใช่ MonadPlus คืออะไร : สมมติว่าเป็น monad อะไรคือความสัมพันธ์ betweem เมตรเป็นทางเลือกที่MonadPlusCatchและMonadPlusDistr ? mmmmmmสำหรับแต่ละคู่ที่เป็นไปได้ทั้งหกคู่นั้นฉันต้องการพิสูจน์ว่ามีนัยหนึ่งหรืออีกตัวอย่างหนึ่งที่ไม่เป็นเช่นนั้น (ฉันกำลังใช้ MonadPlusCatchเพื่อแยกความแตกต่างของMonadPlusที่เป็นไปตามกฎLeft-Catch : mplus (return a) b = return a MonadPlusDistrเพื่อแยกความแตกต่างของMonadPlusที่ทำให้กฎการกระจายซ้าย : mplus a b >>= k = mplus (a >>= k) (b >>= k) ดูMonadPlus บน HaskellWiki ) ความรู้และสัญชาตญาณปัจจุบันของฉันคือ: MonadPlusDist ทางเลือก - น่าจะเป็นจริง - ดูเหมือนว่าตรงไปตรงมาฉันเชื่อว่าฉันมีร่างของหลักฐานฉันจะตรวจสอบและถ้ามันถูกต้องฉันจะโพสต์มัน …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.