ฉันได้รับคำถามต่อไปนี้จากการทดสอบ:
เขียนฟังก์ชั่นที่มีประเภทดังต่อไปนี้
f
และไม่ควรผูกมัดในความหมายใด ๆ ยิ่งรหัสสั้นยิ่งดีa -> b -> (a -> b)
a
b
f a b = \x -> snd ([a,x],b)
ฉันมาด้วย คุณสามารถหาบางอย่างที่สวยกว่า?
ปัจจุบันผู้ชนะคือ: f _=(.f).const
f _ b _ = b
แต่เนื่องจากวิธีการแก้ปัญหาในคำถามฉันสงสัยว่าประเภททั่วไปไม่ได้รับอนุญาต
f = id
ล่ะ
f = f
เป็นวิธีแก้ปัญหาดังนั้นฉันเดาว่าเงื่อนไขในประเภทนั้นสำคัญมาก!
f = const const
ถ้าประเภททั่วไปมากขึ้นจะได้รับอนุญาต: