ฉันเคยเป็นนักพัฒนา Java มานาน แต่เมื่อเร็ว ๆ นี้ฉันเข้าร่วมทีม Haskell ในโลกของจาวาถ้าคุณมีโครงการขนาดใหญ่โดยมีหลายทีมที่ทำงานอยู่วิธีการทั่วไปคือการใช้เซิร์ฟเวอร์สิ่งประดิษฐ์เช่น Maven เพื่อความสะดวกและรวดเร็วในการพัฒนา เครื่องมือสร้างจำนวนมากเช่น Ant, Maven, Gradle สามารถสร้างโครงการและอัปโหลดไฟล์ jar ไปยังเซิร์ฟเวอร์สิ่งประดิษฐ์ที่สามารถใช้งานโดยส่วนที่เหลือของทีมโดยไม่มีความเจ็บปวด ดังนั้นโดยการแยกโครงการออกเป็นโครงการย่อยขนาดเล็กเวลาสร้างจะลดลงอย่างมาก
ในด้านของ Haskell เราใช้cabal
เพื่อสร้างโครงการ โครงการของเราใช้เวลาในการสร้างประมาณ 10-15 นาทีโดยไม่มีการเพิ่มประสิทธิภาพ ใช้เวลาสองสามชั่วโมงหากเปิดการปรับแต่งคอมไพเลอร์ซึ่งเป็นเรื่องเจ็บปวด
ฉันสงสัยว่าเราจะทำสิ่งเดียวกันกับที่เราทำใน Java ที่นี่ได้อย่างไร มีวิธีง่าย ๆ ในการรวบรวมและอัปโหลดไบนารีของแพ็คเกจ (ไลบรารี) ไปยังเซิร์ฟเวอร์สิ่งประดิษฐ์และใช้ไบนารีที่สร้างไว้ล่วงหน้าในเวลาบิลด์หรือไม่ ฉันรู้ว่าเนื่องจาก Haskell สร้างรหัสเครื่อง (แทนที่จะเป็นรหัสไบต์ใน Java) อาจมีปัญหาความเข้ากันได้ แต่เราอาจมีไบนารีต่างกันสำหรับสถาปัตยกรรม / ระบบปฏิบัติการต่าง ๆ ที่เก็บไว้ในเซิร์ฟเวอร์ส่วน
cabal
, GHC
, Test.Framework
หรือลิงเกอร์