Haskell มีความสัมพันธ์อย่างใกล้ชิดกับตระกูลภาษา ML ซึ่งรวมถึงสิ่งต่าง ๆ เช่นOCamlแน่นอน แต่ยังเป็นF #บนแพลตฟอร์ม. NET ภาษาเหล่านี้ใช้ร่วมกับ Haskell ซึ่งเป็นพื้นฐานของระบบประเภทและวิธีการใช้ข้อมูล - ประเภทข้อมูลเกี่ยวกับพีชคณิตการจับคู่รูปแบบการอนุมานประเภท ฯลฯ พวกเขาสามารถแตกต่างอย่างมากจาก Haskell ในจุดอื่น ๆ แน่นอนว่า ML ส่วนใหญ่เข้มงวดและไม่บริสุทธิ์ เริ่มต้นด้วยและความนิยมของ Haskell ในฐานะยานพาหนะสำหรับการวิจัยในระบบพิมพ์และการออกแบบภาษาหมายความว่าภาษาสไตล์ ML ส่วนใหญ่มักจะมีระบบพิมพ์ที่ทรงพลังน้อยกว่า (แต่อาจเข้าใจได้ง่ายกว่า) มันอาจจะปลอดภัยที่จะบอกว่าในขณะที่คุณอาจพลาดบางสิ่งเกี่ยวกับ Haskell โดยเฉพาะอย่างยิ่งในตอนแรกโปรแกรมเมอร์ Haskell ส่วนใหญ่อาจรู้สึกสบายใจที่บ้านใน ML ที่ค่อนข้างเร็วในระดับการทำสิ่งพื้นฐาน หากคุณต้องการภาษาที่มีโครงสร้างโดยรวมเหมือนกับ Haskell ML จะเป็นทางออกที่ดีที่สุดของคุณ
ด้านการทำงานของสกาลาดึงมาจากประเพณี ML อย่างมากและยังดึงคุณสมบัติระบบขั้นสูงบางอย่างที่คุ้นเคยจาก Haskell รวมถึงระบบ OOP มาตรฐานที่รวมเข้ากับข้างต้น ในขณะที่ OO ในภาษาสไตล์ ML นั้นมีแนวโน้มที่จะเข้าใกล้เป็น "โมเดล OO ด้วยเครื่องมือการทำงานขั้นพื้นฐาน" มากกว่า Scala มีชีวิตและสูดลมหายใจ OO แบบ Java สิ่งนี้มีประโยชน์สำหรับ Java interop อย่างที่คุณอาจจินตนาการและนำเสนอสภาพแวดล้อมการทำงานที่คุ้นเคยสำหรับโปรแกรมเมอร์ OO อย่างไรก็ตามจากพื้นหลังของ Haskell คุณมีแนวโน้มที่จะถูกรบกวนด้วยวิธีการผสมผสานสิ่งต่าง ๆ เข้าด้วยกันใน Scala ทำให้สำนวนฟังก์ชั่นที่ใช้งานได้ยากขึ้นและค้นหา Java APIs ส่วนใหญ่ที่ออกแบบมาไม่ดีและใช้งานยาก
ในที่สุดในขณะที่มันอาจดูแปลกที่จะต้องพิจารณาClojureจริง ๆ แล้วมีหลายสิ่งร่วมกันกับ Haskell ในระดับปรัชญามากกว่า สิ่งที่คุณจะพบในแนวทางของ Clojure ในการระบุสถานะและค่านิยมกับตัวตนนั้นใกล้เคียงกับจิตวิญญาณของ Haskell อย่างเป็นทางการผ่านระบบการพิมพ์ ตามลำดับ Clojure เน้นการทำงานร่วมกันของ Java ในระดับที่เล็กลงและไม่ต้องกังวลมากกับการลากใน OOP ดังนั้นในบางวิธีแนวทางของ Clojure ในการเขียนโปรแกรมการทำงานนั้นอาจใกล้เคียงกับสิ่งที่คุณคุ้นเคยอยู่แล้ว ฉันคิดว่ามันเป็นการบอกในเรื่องนี้ว่าด้วยความรู้ที่ดีที่สุด Clojure เป็นภาษาเดียวที่นอกเหนือจาก Haskell ที่มีการใช้งานSTMมันง่ายมีประสิทธิภาพและใช้ได้ผล ในทางตรงกันข้าม Clojure มาจากประเพณีเสียงกระเพื่อมและขาดระบบแบบคงที่และเน้นประเภทข้อมูลพีชคณิตและการจับคู่รูปแบบที่พบในภาษา ML อิทธิพล และแน่นอนมันเป็นเสียงกระเพื่อมซึ่งเป็นผลลบต่อบางคน (แม้ว่าฉันไม่รู้ว่าทำไม)
การพูดกับตัวเองด้วยข้อจำกัดความรับผิดชอบว่าประสบการณ์ครั้งแรกของฉันในการเขียนโปรแกรมการทำงานอยู่ใน Scheme ฉันอาจจะเอนตัวไปที่ Clojure ด้วย OCaml เป็นตัวเลือกที่สอง