ความผิดพลาดของการรักษาความปลอดภัย นี่เป็นเรื่องไร้สาระ
ไม่กี่ประเภทพื้นฐาน ตอนนี้ OCaml มีอาร์เรย์ไบต์และไบต์ แต่ไม่มีสตริง Unicode ในตัว, จำนวนเต็ม 16 บิต, จำนวนเต็มที่ไม่ได้ลงชื่อ, ลอย 32 บิต, เวกเตอร์หรือเมทริกซ์ ห้องสมุดบุคคลที่สามให้บริการบางส่วน
เงียบจำนวนเต็มล้น ไม่เปลี่ยนแปลง แต่ไม่เคยมีปัญหา
โมดูล Immutability คำแนะนำของเขาที่ควรเปลี่ยนฟังก์ชั่นและโมดูลนั้นเป็นเรื่องที่น่ากลัวอย่างมากสำหรับ Lisp และเป็นความคิดที่แย่มาก คุณสามารถแทนที่โมดูลที่ใช้include
ถ้าคุณต้องการ แต่คุณไม่สามารถกลายพันธุ์โมดูลได้
polymorphism สาเหตุขณะเรียกใช้ข้อผิดพลาดประเภท นี่เป็นปัญหาใหญ่ของ OCaml และยังไม่ได้รับการแก้ไข เมื่อประเภทของคุณพัฒนาความเท่าเทียมกันของ polymorphic การเปรียบเทียบและการแฮชจะเริ่มล้มเหลวเมื่อพบประเภทเช่นฟังก์ชั่นและการแก้จุดบกพร่องปัญหานั้นยากมาก F # มีทางออกที่ดีสำหรับปัญหานี้
ไม่มีมาโคร แดกดันเมื่อเขาเขียน OCaml นี้จริง ๆ แล้วได้รับการสนับสนุนอย่างเต็มที่สำหรับแมโคร แต่ตอนนี้พวกเขาได้ตัดสินใจที่จะดึงคุณลักษณะออกมา
ห่อ นี่เป็นปัญหาจริงและยังไม่ได้รับการแก้ไข ยังไม่มีtry ... finally
โครงสร้างในภาษา OCaml และไม่มี wrapper ที่ใช้ใน stdlib
สถานที่ ไม่เปลี่ยนแปลง แต่ไม่ใช่ปัญหา
ข้อมูลบันทึกนรกตั้งชื่อ จัดโครงสร้างรหัสของคุณอย่างถูกต้องโดยใช้โมดูล
วากยสัมพันธ์ ไม่เปลี่ยนแปลง แต่ไม่ใช่ปัญหา
ไม่มีความแตกต่าง นี่เป็นเรื่องไร้สาระส่วนใหญ่เมื่อเขาเขียนและไม่มีอะไรเปลี่ยนแปลง
ชุดฟังก์ชั่นที่ไม่สอดคล้องกัน OCaml ยังไม่มีcons
ฟังก์ชั่น ไม่เป็นไร. ฉันไม่ต้องการเสียงกระเพื่อมในภาษาของฉันขอบคุณ
ไม่มีตัวแปรแบบไดนามิก เป็นสิ่งที่ดีเกี่ยวกับ OCaml ยังคงเป็นสิ่งที่ดีเกี่ยวกับ OCaml
ตัวเลือก ~ ข้อโต้แย้งดูด อาร์กิวเมนต์ตัวเลือกหิน ฉันทำให้ไมโครซอฟท์พาพวกเขาไปเพิ่มอาร์กิวเมนต์ที่เป็นตัวเลือกใน F #
ข้อโต้แย้งบางส่วนที่ไม่สอดคล้องกันแอพลิเคชัน ใช่มั้ย?
การอ่านเลขคณิตของ สิ่งนี้เปลี่ยนไปตั้งแต่ฉันหยุดใช้ OCaml ~ 8 ปีที่แล้ว Int64.((q * n - s * s) / (n - 1L))
เห็นได้ชัดว่าตอนนี้คุณสามารถทำ
แก้ปัญหาความขัดแย้งชื่อเงียบ เขาพยายามที่จะทำการพัฒนาซอฟต์แวร์เต็มรูปแบบใน REPL ตามที่คุณต้องการใน LISP อย่าทำอย่างนั้นใน OCaml ใช้ไฟล์และการรวบรวมแบทช์โดยใช้ REPL สำหรับการทดสอบรันโค้ดแบบใช้ครั้งเดียวและการคำนวณทางเทคนิคเชิงโต้ตอบเท่านั้น
การสั่งซื้อของการประเมินผล สิ่งนี้ผิดเมื่อเขาเขียน ลำดับของการประเมินผลไม่ได้กำหนดไว้ใน OCaml
ไม่มีการป้อนข้อมูลวัตถุ / ส่งออก เขาอ้างถึงห้องสมุดบุคคลที่สามซึ่งได้แก้ไขปัญหานี้แล้ว
คอมไพเลอร์หยุดหลังจากข้อผิดพลาดแรก ใช่มั้ย?
ไม่มีการติดตามสแต็กสำหรับไฟล์เรียกทำงานที่คอมไพล์แล้ว แก้ไขแล้ว.
ดีบักเกอร์ครับ ฉันไม่เคยใช้ดีบักเกอร์ การตรวจสอบประเภทคงที่จับข้อบกพร่องของฉันเกือบทั้งหมด
GC ครับ ฉันพบว่า GC ของ OCaml นั้นยอดเยี่ยมยกเว้นปัญหาสำคัญอย่างหนึ่ง: การล็อกส่วนกลางป้องกันการเขียนโปรแกรมแบบขนาน
ไม่มีการประกาศไปข้างหน้าโดยปริยาย การเรียกซ้ำร่วมกันนั้นชัดเจนโดยการออกแบบใน ML ทั้งหมด ความผิดปกติเท่านั้นคือtype
คำจำกัดความที่เรียกซ้ำโดยค่าเริ่มต้นในขณะที่let
การผูกจะไม่ซ้ำโดยค่าเริ่มต้น
รอบที่ฟังก์ชั่นจะขาด OCaml ยังคงมีกระดูกเปลือยอยู่ แต่ห้องสมุดของบุคคลที่สามอย่าง Jane St's Core ให้round
และเพื่อน ๆ
รายการ List.map
ยังคงไม่ซ้ำแบบเรียกซ้ำ ฉันส่งแพตช์เพื่อแก้ไขข้อบกพร่องที่ร้ายแรงเช่นนี้และต้องรอหลายปีก่อนที่มันจะปรากฏในรุ่น รายการยังคงไม่เปลี่ยนรูปแน่นอน และดังนั้นพวกเขาควรจะเป็น
ความเร็ว ฉันเชื่อว่าเวลาคอมไพล์สำหรับตัวแปร polymorphic ขนาดใหญ่ได้รับการแก้ไขแล้ว
จับคู่รูปแบบ ชัยชนะแห่งความหวังเหนือความเป็นจริง ชุมชน Lisp ล้มเหลวในการทำเช่นนี้ ดังนั้นกฎข้อที่สิบของฉัน: โปรแกรมเสียงกระเพื่อมที่มีความซับซ้อนเพียงพอประกอบด้วย ad-hoc, การใช้งานที่ระบุอย่างไม่เป็นทางการและการใช้งานข้อผิดพลาดของครึ่งหนึ่งของคอมไพเลอร์การจับคู่รูปแบบของ OCaml
แต่คุณสามารถเรียกใช้เครื่องพิมพ์สวย ๆ จากระดับบนสุดเป็นการเรียกไลบรารี่ซึ่งให้ข้อมูลประเภทที่จำเป็น และมีมาโครที่คุณสามารถใช้เพื่อใส่คำอธิบายประกอบโครงสร้างข้อมูลเพื่อให้เครื่องพิมพ์สร้างอัตโนมัติได้