อะไรคือสัญชาติญาณที่สนับสนุนการเรียกตัวสร้างบางทีใน Haskell“ Just”?


11

สัญชาตญาณของประเภทที่เป็นตัวเลือกเช่นเดียวกับMaybe Intที่ไม่มี Int (เช่นนั้นNothingมี) หรือว่ามีInt บางตัว มีบางสิ่งที่นั่น

มันทำให้ฉันรู้สึกว่าเราเรียก constructor ชนิดสำหรับ "เชิงลบ" กรณีNothingเพราะมันหมายความว่าที่ - ว่าไม่มีIntมี แต่ใช้คำว่าทำไมเพียงแค่ในกรณีที่เน้นอยู่ในสิ่งที่เป็นจริงมี ?

สำหรับฉันคำว่า "เพิ่ง" มีความหมายแฝงอยู่ว่าสิ่งที่อธิบายนั้นน้อยกว่าทางเลือก ตรงกันข้ามกับสิ่งที่อยู่ที่นั่นจริง ๆ ; ตัวอย่างเช่น,

ตอบ: คุณกำลังทำอะไรคืนนี้

B: ไม่; ฉันแค่จะอยู่ในและดูทีวี

ตอบ: คุณตรวจสอบเสียงผีที่น่าขนลุกรอบ ๆ บ้านของคุณหรือไม่?

B: ใช่ปรากฎว่ามันเป็นแค่นกฮูก

เห็นได้ชัดว่าฉันขาดสัญชาตญาณสิ่งที่ตัวเลือกการตั้งชื่อนี้มีพื้นฐานมาจาก มันคืออะไร? เพราะให้ฉันคำเพียงหมายถึงตรงข้ามของวิธีการที่จะนำมาใช้ในที่Maybeประเภท


4
ในกรณีนี้ฉันคิดว่าสกาล่าไปด้วยชื่อที่ดีกว่าของบางคนเมื่อเทียบกับไม่มี (ไม่ได้บอกว่าเป็นสิ่งประดิษฐ์ของสกาล่า)
Andres F.

3
@AndresF อย่างน้อยก็กลับไปสู่ ​​ML ซึ่ง Odersky คุ้นเคยกับมันอย่างแน่นอน
Derek Elkins ออกจาก SE

2
@RobertHarvey ถ้า Haskeller ใช้Maybeเป็น monad ที่พวกเขามีแนวโน้มที่จะใช้returnและอาจจะสิ่งที่ชอบแทนmzero Nothingเมื่อJustใช้โดยตรงมักMaybeจะไม่ถูกใช้ในรูปแบบ monadic ณ จุดนั้น
Derek Elkins ออกจาก SE

2
แบบอย่างทางประวัติศาสตร์จะเป็นOptionประเภท นักออกแบบของ Haskell อาจจะรู้สึกว่าfoo x = Just x"อ่าน" foo x = Some xดีกว่า ในทำนองเดียวกันความหมายdata Maybe a = Just a | Nothingอ่านค่อนข้างดีว่า " Maybe aเป็นอย่างใดอย่างหนึ่งJust aหรือเป็นNothing" Someอ่านได้ดีพอสมควรมี แต่ไม่ได้สำหรับNone data Option a = Some a | None
Derek Elkins ออกจาก SE

3
พวกเขายังมีชีวิตอยู่ คุณสามารถส่งอีเมลถึงคนอย่าง Phil Wadler และ Simon Peyton Jones และถามพวกเขา หรือลองใช้รายชื่อผู้รับจดหมายของ Haskell-Cafe
Derek Elkins ออกจาก SE

คำตอบ:


2

สิ่งนี้ได้รับการอธิบายในอดีตโดย Simon Peyton Jones แสดงว่าไม่มีสิ่งใดสามารถเป็นค่าหรือ 'เพียงแค่' ค่าประเภทอื่น ๆ เพียงอย่างเดียว มี 'เพียง' อีกสิ่งหนึ่งที่สามารถส่งคืนเป็นค่าหรือไม่มีอะไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.