ฉันทำสิ่งนี้กับงูหลาม ฉันพบว่ามันยุ่งยากในการเขียนในลักษณะการทำงานที่บริสุทธิ์ทางพันธุกรรมในภาษาที่ไม่ได้ออกแบบมาสำหรับมัน ตัวอย่างเช่นเปรียบเทียบสองคำจำกัดความของin_order :
def in_order(xs):
for i in range(1,len(xs)):
if xs[i] > xs[i+1]:
return False
return True
inOrder :: (Ord a) => [a] -> Bool
inOrder xs = and $ zipWith (<=) xs (tail xs)
การเขียนin_order
วิธี Haskell ใน python จะเป็นทั้ง verbose (เนื่องจาก python ไม่รองรับสำนวนที่จำเป็นมาก) และช้า (พื้นที่เชิงเส้นแทนพื้นที่คงที่ของ Haskell เนื่องจากความเกียจคร้าน)
อย่างไรก็ตามฉันประสบความสำเร็จในการสร้างโปรแกรมหลามด้วยการจัดระเบียบหน้าที่และการใช้สำนวนของแต่ละฟังก์ชั่น แนวคิดที่ว่านี่เป็นวิธีที่ดีในการเขียนโปรแกรมจริงๆแล้วเป็นวิทยานิพนธ์ที่อยู่เบื้องหลังโครงการcodecatalogของฉัน ดังนั้นส่วนประกอบของฉันจะเน้นไปที่ abstractions และฟังก์ชั่น (ด้วยinterfaceบริสุทธิ์) ที่ทำงานกับมันมากกว่าคลาสที่มี state และมันก็มารวมกันอย่างดี ในความเป็นจริงการจัดระเบียบรหัสด้วยวิธีนี้ดูเหมือนว่าจะมีความยืดหยุ่นในการใช้ซ้ำมากกว่ารหัสที่จัดระเบียบด้วยคลาส นั่นอาจเป็นอคติส่วนตัวเนื่องจากฉันยังเป็นผู้นับถือศรัทธาของ Haskell อยู่
ดังนั้นผมจะบอกว่าคำตอบของคำถามของคุณอยู่นะ ใช้รูทการทำงานของคุณเพื่อช่วยในการคิด แต่อย่าหักโหม เช่น. การเลียนแบบรายการสันหลังยาวใน Ruby เพียงเพื่อประโยชน์ของสำนวนน่าจะเป็นปัญหามากกว่าที่มันคุ้มค่า