ฉันมีฟังก์ชันที่แปลง [a, b, c, d, . . . ] ถึง [(a,b), (c, d), . . .]. ตอนนี้ใช้งานได้แล้วและนี่คือรหัสสำหรับสิ่งนั้น:
makeTuple :: [a] -> [(a,a)]
makeTuple [] = []
makeTuple [a] = []
makeTuple (x:y:xs) = (x,y): (makeTuple xs)
สิ่งต่อไปที่ฉันต้องทำคือ: ใช้ฟังก์ชันก่อนหน้า แปลงแต่ละทูเพิลเป็นผลคูณขององค์ประกอบทั้งสอง โดยใช้นิพจน์ foldl และแลมบ์ดา และนี่คือสิ่งที่ฉันมี:
productTuple [x] = foldl makeTuple [] [x]
ตอนนี้ฉันไม่แน่ใจว่านี่คือสิ่งที่ถูกถามถึงฉันหรือไม่ ฉันไม่แน่ใจว่าฉันควรสร้างฟังก์ชันแยกต่างหากพร้อมการประกาศประเภทหรือไม่ บางทีอาจมีคนบอกฉันว่านั่นเป็นวิธีที่ดีที่สุดในการเข้าถึงสิ่งนี้หรือไม่ นอกจากนี้รหัสนี้ใช้งานไม่ได้ และฉันไม่รู้ว่าทำไม ฉันต้องการความช่วยเหลือในส่วนนี้ (สังเกตว่ามันบอกว่าให้ใช้แลมบ์ดา แต่ฉันไม่รู้ว่าจะใช้มันอย่างถูกต้องได้อย่างไร ซึ่งเป็นอีกส่วนหนึ่งที่ฉันต้องการความช่วยเหลือ) ฉันจะขอบคุณจริงๆ ขอบคุณ
makeTuple
ของคุณ? - person Willem Van Onsem   schedule 02.11.2017productTuple (x:xs)
และproductTuple []
- person altschuler   schedule 02.11.2017foldl
ที่ใช้เป็นรายการอินพุตเพื่อสร้างรายการนั้นขึ้นมาใหม่ได้อย่างไร (โดยพื้นฐานแล้วเป็นฟังก์ชันid
) - person Willem Van Onsem   schedule 02.11.2017