อะไรทำให้ภาษา ML สองภาษาแตกต่างกัน?
อะไรทำให้ภาษา ML สองภาษาแตกต่างกัน?
คำตอบ:
มีความแตกต่างมากมายทางเทคนิคบางอย่างสังคมการเมือง ฉันพยายามใส่ความแตกต่างที่สำคัญกว่าก่อน
SML เป็นภาษาที่มีความหมายและมาตรฐาน มีความเสถียร (และในความเป็นจริงถูกแช่แข็งจึงไม่สามารถวิวัฒนาการได้) Objective Caml เป็นการดำเนินการที่ควบคุมโดยกลุ่มย่อยที่ INRIA มันยังคงพัฒนาไปเรื่อย ๆ (IMO วิวัฒนาการได้รับการจัดการอย่างดี)
SML มีการใช้งานมากมาย Caml มีเพียงหนึ่งเดียว
Objective Caml มีคุณสมบัติเพิ่มเติมหลายประการซึ่งสิ่งที่โดดเด่นที่สุดน่าจะเป็นวัตถุและรูปแบบหลายรูปแบบ
ทั้งสองภาษามีรูปแบบการบันทึกที่แตกต่างกันอย่างมาก โดยสังเขปใน Caml ชื่อของฟิลด์เรกคอร์ดต้องไม่ซ้ำกันโดยที่ใน SML ประเภทเรกคอร์ดที่แตกต่างกันสองประเภทในขอบเขตเดียวกันอาจมีชื่อฟิลด์ที่เหมือนกัน มุมแหลมนี้สามารถทำให้การย้ายจาก SML ไปยัง Caml เป็นเรื่องยุ่งยากเล็กน้อย
มีความแตกต่างทางวากยสัมพันธ์ค่อนข้างน้อย
ไลบรารีและฟังก์ชันมาตรฐานแตกต่างกันอย่างมาก ไลบรารี Caml มีความจำเป็นมากในขณะที่ไลบรารีพื้นฐานมาตรฐาน SML นั้นใช้งานได้มากกว่า ตัวอย่างเช่นองค์ประกอบของฟังก์ชันเป็นพื้นฐานระดับบนสุดใน SML ไม่ใช่ส่วนหนึ่งของไลบรารี Caml ไลบรารีสตริง Caml ไม่มีฟังก์ชันพับ (อย่างน้อยก็ไม่ใช่ของเวอร์ชัน 3.08) การใช้งานList
ฟังก์ชันCaml จำนวนมากไม่ปลอดภัยสำหรับรายการที่ยาวมาก พวกเขาระเบิดกอง
ระบบประเภทมีความแตกต่างกันเล็กน้อย: ใน Caml คำอธิบายประกอบประเภทบนนิพจน์e : ty
จะได้รับการยอมรับหากชนิดty
รวมเข้ากับชนิดของe
. ใน SML e : ty
จะยอมรับเฉพาะในกรณีที่ประเภทty
นั้นเป็นอินสแตนซ์ของประเภทe
. ความแตกต่างนี้ทำให้คำอธิบายประกอบใน Caml มีประโยชน์น้อยกว่ามากในทางปฏิบัติเนื่องจากเป็นไปไม่ได้ที่จะใช้คำอธิบายประกอบประเภทเพื่อยืนยันว่านิพจน์เป็นความหลากหลาย
Caml มีความสัมพันธ์ที่สมเหตุสมผลและสมเหตุสมผลระหว่างอินเทอร์เฟซ (เรียกว่าประเภทโมดูลหรือลายเซ็น ) และการใช้งาน (ที่เรียกว่าโมดูลหรือโครงสร้าง ) มากกว่า SML ใน SML แทบจะไม่มีอะไรเกิดขึ้นและคุณต้องพึ่งพาโปรแกรมเมอร์เพื่อสร้างอนุสัญญาที่ดี ใน Caml ข้อตกลงที่ดีถูกกำหนดและบังคับใช้โดยคอมไพเลอร์
ใน SML ตัวดำเนินการทางคณิตศาสตร์จะมีภาระมากเกินไปที่จะนำไปใช้กับทั้งข้อมูลทศนิยมและจำนวนเต็ม ใน Caml ตัวดำเนินการจะไม่ทำงานมากเกินไป ตัวดำเนินการทศนิยมจะถูกระบุด้วยจุดพิเศษ
ใน SML โปรแกรมเมอร์สามารถควบคุมลำดับความสำคัญและความสัมพันธ์ของตัวดำเนินการ infix ได้ ใน Caml ค่าเหล่านี้กำหนดโดยอักขระตัวแรกของชื่อตัวดำเนินการ ข้อ จำกัด นี้ จำกัด ประโยชน์ของความสามารถในการกำหนดสัญกรณ์ infix ของคุณเอง
สำหรับสมบูรณ์การวิเคราะห์รายละเอียดเพิ่มเติมด้วยกับความคิดเห็นของกองบรรณาธิการคุณยังสามารถดูที่หน้าอดัมเปรียบเทียบ Chlipala ของ
e : 'a . ty(a)
เป็นไปได้และมีความหมาย
สำหรับรายละเอียดเกี่ยวกับความแตกต่างทางวากยสัมพันธ์ที่ Norman Ramsey กล่าวถึงนี่คือหน้าเว็บสองสามหน้า:
OCaml เพิ่มคุณสมบัติการวางแนววัตถุและมีความแตกต่างทางไวยากรณ์เล็กน้อย