คำถามติดแท็ก function

สำหรับความท้าทายที่ขอฟังก์ชั่นหรือเกี่ยวข้องกับฟังก์ชั่นในบางวิธี (เรียกอีกอย่างว่าวิธีการหรือรูทีนย่อย)

2
แปลง pointfree เป็น pointful
ในฐานะที่เป็นแฮ็กเกอร์ Haskell ฉันชอบสัญกรณ์ pointfree มากกว่าประเด็น น่าเสียดายที่บางคนพบว่าโน้ตที่ไม่มีจุดอ่านยากที่จะอ่านและฉันพบว่ามันยากที่จะรับวงเล็บที่ถูกต้องเมื่อฉันเขียนแบบไม่มีจุดหมาย ช่วยฉันแปลงโค้ดที่เขียนด้วย pointfree เป็นเครื่องหมายที่ไม่มีจุดหมาย! เกี่ยวกับ ในสัญกรณ์ pointfree เราใช้ points (ใช่จริง ๆ ) เพื่อป้อนข้อมูลผลลัพธ์ของฟังก์ชันหนึ่งไปยังอีกฟังก์ชัน พูดว่าถ้าคุณมีฟังก์ชั่นsuccที่ใช้ตัวเลขและบวก 1 กับมันและคุณต้องการสร้างฟังก์ชันที่บวก 3 เข้ากับตัวเลขแทนที่จะทำสิ่งนี้: \x -> succ(succ(succ(x))) คุณสามารถทำสิ่งนี้: succ.succ.succ Pointfree ใช้งานได้กับฟังก์ชั่นที่ใช้พารามิเตอร์เดียวเท่านั้น (ในความท้าทายนี้ต่อไป) ดังนั้นหากฟังก์ชั่นของเราไม่ได้เป็นsuccแต่addใช้หมายเลข 2 และรวมเข้าด้วยกันเราจะต้องป้อนมันอาร์กิวเมนต์จนกว่าจะเหลือเพียงหนึ่ง: pointful: \x -> add 1(add 1(add 1 x)) pointfree: add 1 . add 1 . add …

5
Combinator จุดคง Golfed
เขียนcombinator จุดคงที่ในตัวละครน้อยที่สุดในภาษาที่คุณเลือก รูปแบบอิสระ ( เช่นอะไรก็ตามที่สั้นที่สุด): ทั้งโปรแกรมฟังก์ชันที่แท้จริงโค้ดขนาดสั้น คุณไม่สามารถใช้ไลบรารีมาตรฐานของคุณถ้ามันมี อย่างไรก็ตามคุณสามารถดึงมันออกมาจากฟังก์ชั่นระดับสูงอื่น ๆ ที่คุณต้องการทำมากกว่าสร้างจากฐาน โปรดรวมแฟกทอเรียลแบบเรียกซ้ำหรือฟีโบนักชีที่ใช้เป็นตัวอย่าง ในคำถามนี้การอ้างอิงตนเองเป็นที่ยอมรับจุดมุ่งหมายนั้นเพียงเพื่อลบออกจากฟังก์ชั่นวนซ้ำที่จะนำไปใช้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.