ทำไมประเภทตัวเลือก Scala ไม่ถูกเรียกว่าอาจจะเหมือนกับใน Haskell [ปิด]


13

ทำไมประเภทตัวเลือก Scala ไม่ถูกเรียกว่าอาจจะเหมือนกับใน Haskell

อาจทำให้รู้สึก "ความหมาย" มากขึ้นสำหรับฉัน แต่บางทีตัวเลือกอาจมีพฤติกรรมที่แตกต่างกันซึ่งฉันไม่ทราบ

มีเหตุผลใดเป็นพิเศษหรือไม่ที่ตัวเลือกใน Scala ไม่ได้ถูกเรียกว่าอาจจะ?

คำตอบ:


23

Scala นอกจากนี้ยังเป็นแรงบันดาลใจ Ocaml ซึ่งใช้ตัวเลือก

ตัวเลือกเป็นประเภทมาตรฐาน Ocaml ที่สามารถเป็นได้None(ไม่ได้กำหนด) หรือSome xที่ x สามารถเป็นค่าใด ๆ ตัวเลือกที่ใช้กันอย่างแพร่หลายใน Ocaml เพื่อแสดงค่าที่ไม่ได้กำหนด (เช่น NULL ใน C แต่ในรูปแบบที่ปลอดภัยและหน่วยความจำ)

ฉันคิดว่าชื่อที่เลือกนั้นเป็นเรื่องของรสนิยม


8
F # ด้วย หน้าวิกิพีเดียเป็นen.wikipedia.org/wiki/Option_type ดูเหมือนจะเป็นชื่อมาตรฐานมากกว่าMaybe
KChaloux

2
Ocaml ได้รับชื่อจาก SML จากคร่าว ๆ อย่างรวดเร็วผ่านภาษาการเขียนโปรแกรม Next 700 ภาษาของ Landin ฉันไม่ได้สังเกตเห็นประเภทของตัวเลือกดังนั้น SML อาจเป็นที่มาของชื่อ
Peter Taylor

1
ข้อโต้แย้งที่เห็นOptionได้ชัดคือมันเป็นoptionalคุณค่า (ไม่ว่าคุณจะได้มาหรือไม่สนใจ) Maybeแสดงถึงระดับความไม่แน่นอนในส่วนของโปรแกรมเมอร์ อาจจะมีค่าหรือไม่ ฉันไม่รู้ .. ฉันควรจะได้รับสิ่งที่คุ้มค่าหรือไม่? ถ้อยคำนั้นoptional valueฟังดูมีเจตนามากขึ้นในความคิดของฉัน
Jochem Kuijpers

6

คำถามที่ดีกว่าที่นี่จะเป็นเหตุผลที่ตัวเลือกประเภทของ Haskell Maybeจะเรียกว่า ประเภทตัวเลือก ML ของน่าจะเป็น grandaddy optionทุกประเภทตัวเลือกและก็เรียกว่า

ไม่ว่าในกรณีใด ๆ นี่เป็นคำถามเชิงศัพท์ดังนั้นจึงไม่มีคำตอบที่ชัดเจน คนที่เลือกชื่อใน Haskell ชอบมันมากกว่า


2
คุณมีข้อมูลอะไรบ้างในการทำซ้ำคำตอบใหม่ที่ได้รับการตอบรับอย่างดีจากคำตอบที่ยอมรับและความคิดเห็นพื้นฐาน
Robert Harvey

4
@RobertHarvey ML มีการตั้งค่าแบบอย่างคือข้อมูลใหม่ปัญหาที่แท้จริงคือคำตอบคือการคาดเดาแม้กระทั่งว่า
djechlin

ตกลง. คุณมีการอ้างอิงหรืออะไรมากกว่าแค่ความคิดเห็น? เพราะความคิดเห็นนั้นแสดงได้ดีกว่าเป็นความคิดเห็นไม่ใช่คำตอบ โดยเฉพาะย่อหน้าที่สองของคุณ
Robert Harvey

2
Def ตัวเลือก:การกระทำของการเลือก; ทางเลือก. Def บางที; อาจจะ; ความไม่แน่นอน คำตอบที่ไม่แน่นอน สำหรับฉันที่พอจะพูดได้บางทีอาจเป็นชื่อที่ดีกว่ามากจากมุมมองทางภาษาล้วนๆ "ตัวเลือก" บอกเป็นนัยว่ามีตัวเลือก (หลายตัว) ในขณะที่ชื่อ monadic "อาจจะ" เป็นมากกว่าประเด็น: สิ่งเดียวหรือไม่มีอะไร แต่ใช่ ML (และดังนั้นตัวเลือก) มาก่อนดังนั้นอาจเป็นเหตุผลสำหรับชื่อกระต่ายที่ไม่ดี (และดูความคิดเห็นของ Peter Taylor ต่อคำตอบที่ถูกต้องด้านบน - เขาอ้างอิง ML)
fnl

@fnl ดูความคิดเห็นของฉันในคำตอบอื่น ๆ ; ผมคิดว่ามีกรณีที่เหมาะสมที่จะทำให้มันเป็นตัวย่อสำหรับoption optionalในกรณีนี้ตัวเลือก (หลายตัว) จะลดลงเหลือเพียงสองตัวเลือก: มีหรือไม่มี
Jochem Kuijpers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.