คำถามติดแท็ก functional-programming

ฟังก์ชั่นการเขียนโปรแกรมเป็นกระบวนทัศน์การเขียนโปรแกรมตามการสร้าง abstractions โดยใช้ฟังก์ชั่นหลีกเลี่ยงผลข้างเคียงและการเปลี่ยนแปลงของรัฐ การเขียนโปรแกรมใช้งานได้จริงนั้นปลอดภัยต่อเธรด

5
แผนที่หรือลดด้วยดัชนีใน Swift
มีวิธีรับดัชนีของอาร์เรย์ในmapหรือreduceใน Swift หรือไม่ ฉันกำลังมองหาบางอย่างเช่นeach_with_indexในทับทิม func lunhCheck(number : String) -> Bool { var odd = true; return reverse(number).map { String($0).toInt()! }.reduce(0) { odd = !odd return $0 + (odd ? ($1 == 9 ? 9 : ($1 * 2) % 9) : $1) } % 10 == 0 } lunhCheck("49927398716") lunhCheck("49927398717") …

5
"การยก" ใน Haskell คืออะไร
ฉันไม่เข้าใจว่า "การยก" คืออะไร ฉันควรเข้าใจพระก่อนหรือไม่ก่อนที่จะเข้าใจว่า "ลิฟต์" คืออะไร? (ฉันไม่รู้เกี่ยวกับพระอย่างสมบูรณ์เช่นกัน :) หรือใครบางคนสามารถอธิบายให้ฉันด้วยคำง่ายๆ?

13
Javascript เป็นภาษาเขียนโปรแกรมเชิงฟังก์ชันหรือไม่
เพียงเพราะฟังก์ชันเป็นออบเจ็กต์ชั้นหนึ่งมีการปิดและฟังก์ชันลำดับที่สูงกว่า Javascript สมควรถูกเรียกว่าภาษาโปรแกรมฟังก์ชันหรือไม่? สิ่งสำคัญที่ฉันคิดว่ามันขาดคือฟังก์ชั่นที่บริสุทธิ์และมันไม่ 'รู้สึก' เหมือนภาษาที่ใช้งานได้อื่น ๆ เช่นเสียงกระเพื่อม (แม้ว่านั่นไม่ใช่เหตุผลที่ดีจริงๆที่จะไม่เป็นภาษาที่ใช้งานได้ ... )

2
เหตุใดผู้ประเมินที่เหมาะสม opt-calculus จึงสามารถคำนวณเลขชี้กำลังแบบโมดูลาร์ขนาดใหญ่โดยไม่ต้องใช้สูตรได้
หมายเลขคริสตจักรเป็นการเข้ารหัสตัวเลขธรรมชาติเป็นฟังก์ชัน (\ f x → (f x)) -- church number 1 (\ f x → (f (f (f x)))) -- church number 3 (\ f x → (f (f (f (f x))))) -- church number 4 อย่างเรียบร้อยคุณสามารถยกกำลัง 2 หมายเลขคริสตจักรได้โดยใช้มัน นั่นคือถ้าคุณใช้ 4-2 คุณจะได้รับจำนวนคริสตจักรหรือ16 2^4เห็นได้ชัดว่านั่นเป็นเรื่องที่ไม่สามารถเกิดขึ้นได้จริง จำนวนคริสตจักรต้องการหน่วยความจำเชิงเส้นและช้ามากจริงๆ การประมวลผลสิ่ง10^10ที่ GHCI ตอบได้อย่างรวดเร็วจะใช้เวลานานและไม่สามารถใส่หน่วยความจำบนคอมพิวเตอร์ของคุณได้ ฉันได้ทำการทดลองกับผู้ประเมินที่เหมาะสมที่สุดเมื่อเร็ว ๆ นี้ …

5
อะไรคือความแตกต่างหลักระหว่าง Haskell และ F #? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันค้นหาบนอินเทอร์เน็ตเพื่อเปรียบเทียบระหว่างF #และHaskellแต่ไม่พบอะไรที่ชัดเจน อะไรคือความแตกต่างหลักและเหตุใดฉันจึงต้องการเลือกอย่างใดอย่างหนึ่ง

8
ข้อดีของการเขียนโปรแกรมไร้สัญชาติ?
เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้เกี่ยวกับการเขียนโปรแกรมเชิงฟังก์ชัน (โดยเฉพาะ Haskell แต่ฉันได้อ่านบทเรียนเกี่ยวกับ Lisp และ Erlang แล้วด้วย) ในขณะที่ฉันพบว่าแนวคิดนี้ให้ความกระจ่างมาก แต่ฉันก็ยังไม่เห็นด้านที่เป็นประโยชน์ของแนวคิด "ไม่มีผลข้างเคียง" ข้อดีของมันคืออะไร? ฉันพยายามคิดในแนวความคิดที่ใช้งานได้ แต่มีบางสถานการณ์ที่ดูซับซ้อนเกินไปโดยไม่สามารถบันทึกสถานะได้ด้วยวิธีง่ายๆ (ฉันไม่คิดว่า monads ของ Haskell 'ง่าย') การเรียนรู้ Haskell (หรือภาษาอื่นที่ใช้งานได้หมดจด) ในเชิงลึกจะคุ้มค่าหรือไม่? การเขียนโปรแกรมแบบใช้งานได้หรือไร้สัญชาติมีประสิทธิผลมากกว่าขั้นตอนหรือไม่? เป็นไปได้ไหมที่ฉันจะใช้ Haskell หรือภาษาอื่นที่ใช้งานได้ในภายหลังหรือฉันควรเรียนรู้เพื่อความเข้าใจเท่านั้น ฉันสนใจประสิทธิภาพน้อยกว่าประสิทธิภาพการทำงาน ดังนั้นฉันจึงถามเป็นหลักว่าฉันจะทำงานได้ดีกว่าในภาษาที่ใช้งานได้ดีกว่าขั้นตอน / เชิงวัตถุ / อะไรก็ตาม

6
ความแตกต่างระหว่างฟังก์ชันชั้นหนึ่งและฟังก์ชันลำดับสูง
ฉันสงสัยว่า / สิ่งที่แตกต่างระหว่างฟังก์ชั่นเฟิร์สคลาสและการสั่งซื้อสูงฟังก์ชั่น ฉันอ่านทั้งสองหน้า wiki และมันดูค่อนข้างคล้ายกัน ถ้าพวกเขาพูดถึงเรื่องเดียวกันทำไมต้องมีสองคำศัพท์? พยายาม google แล้ว แต่ไม่พบสิ่งที่เป็นประโยชน์

7
จะอัพเดตองค์ประกอบภายในรายการด้วย ImmutableJS ได้อย่างไร?
นี่คือสิ่งที่เอกสารอย่างเป็นทางการกล่าว updateIn(keyPath: Array<any>, updater: (value: any) => any): List<T> updateIn(keyPath: Array<any>, notSetValue: any, updater: (value: any) => any): List<T> updateIn(keyPath: Iterable<any, any>, updater: (value: any) => any): List<T> updateIn(keyPath: Iterable<any, any>, notSetValue: any, updater: (value: any) => any): List<T> ไม่มีทางที่นักพัฒนาเว็บทั่วไป (ไม่ใช่โปรแกรมเมอร์ที่ใช้งานได้) จะเข้าใจสิ่งนั้น! ฉันมีกรณีที่ค่อนข้างง่าย (สำหรับวิธีการที่ไม่ใช้งานได้) var arr = []; arr.push({id: 1, …

9
'Pattern Matching' ในภาษาที่ใช้งานได้คืออะไร?
ฉันกำลังอ่านเกี่ยวกับการเขียนโปรแกรมเชิงฟังก์ชันและฉันสังเกตเห็นว่าการจับคู่รูปแบบมีการกล่าวถึงในหลายบทความว่าเป็นหนึ่งในคุณสมบัติหลักของภาษาที่ใช้งานได้ ใครช่วยอธิบายสำหรับนักพัฒนา Java / C ++ / JavaScript ว่าหมายความว่าอย่างไร

9
ใช้แผนที่หลามและเครื่องมือการทำงานอื่น ๆ
นี่ค่อนข้างน่าเบื่อ แต่ฉันกำลังพยายามเรียนรู้ / ทำความเข้าใจการเขียนโปรแกรมเชิงฟังก์ชันใน python รหัสต่อไปนี้: foos = [1.0,2.0,3.0,4.0,5.0] bars = [1,2,3] def maptest(foo, bar): print foo, bar map(maptest, foos, bars) ผลิต: 1.0 1 2.0 2 3.0 3 4.0 None 5.0 None ถามมีวิธีใช้แผนที่หรือเครื่องมือการทำงานอื่น ๆ ใน python เพื่อสร้างสิ่งต่อไปนี้โดยไม่ต้องวนซ้ำเป็นต้น 1.0 [1,2,3] 2.0 [1,2,3] 3.0 [1,2,3] 4.0 [1,2,3] 5.0 [1,2,3] เช่นเดียวกับข้อสังเกตว่าการใช้งานจะเปลี่ยนไปอย่างไรหากมีการพึ่งพาระหว่าง foo และ …

6
ทำไมไม่มียาชื่อสามัญใน Go?
ข้อจำกัดความรับผิดชอบ: ตอนนี้ฉันเล่นกับ Go เพียงวันเดียวดังนั้นมีโอกาสที่ดีที่ฉันพลาดไปมาก มีใครรู้บ้างไหมว่าทำไมไม่มีการรองรับ generics / template / whatsInAName ใน Go? ดังนั้นจึงมีแบบทั่วไปmapแต่จัดทำโดยคอมไพเลอร์ในขณะที่โปรแกรมเมอร์ Go ไม่สามารถเขียนการใช้งานของตัวเองได้ จากการพูดคุยเกี่ยวกับการทำให้ Go เป็นแบบตั้งฉากกันมากที่สุดทำไมฉันถึงใช้ประเภททั่วไป แต่ไม่สามารถสร้างใหม่ได้ โดยเฉพาะอย่างยิ่งเมื่อพูดถึงการเขียนโปรแกรมเชิงฟังก์ชั่นมี lambdas แม้กระทั่งการปิด แต่ด้วยระบบประเภทคงที่ซึ่งขาด generics ฉันจะเขียนฟังก์ชันลำดับที่สูงกว่าทั่วไปได้filter(predicate, list)อย่างไร? ตกลงรายการที่เชื่อมโยงและสิ่งที่คล้ายกันสามารถทำได้ด้วยการinterface{}เสียสละความปลอดภัยประเภท เนื่องจากการค้นหาอย่างรวดเร็วบน SO / Google ไม่ได้เปิดเผยข้อมูลเชิงลึกใด ๆ ดูเหมือนว่าข้อมูลทั่วไปจะถูกเพิ่มลงใน Go ในภายหลัง ฉันเชื่อว่า ธ อมป์สันจะทำได้ดีกว่าพวก Java แต่ทำไมต้องใช้ชื่อสามัญ? หรือมีการวางแผนและยังไม่ได้ดำเนินการ?

29
ทำไมฉันจึงควรเรียนรู้ Lisp [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันรู้สึกว่าควรเรียนรู้Lispจริงๆและมีแหล่งข้อมูลดีๆมากมายที่จะช่วยฉันทำ ฉันไม่ได้ท้อถอยด้วยไวยากรณ์ที่ซับซ้อน แต่ใน "การเขียนโปรแกรมเชิงพาณิชย์แบบเดิม" ฉันจะหาสถานที่ที่เหมาะสมที่จะใช้แทนภาษาขั้นตอน มีแอพนักฆ่าเชิงพาณิชย์ที่เขียนด้วย Lisp หรือไม่?

8
คุณแสดงกราฟใน Haskell ได้อย่างไร?
ง่ายพอที่จะแสดงต้นไม้หรือรายการใน haskell โดยใช้ประเภทข้อมูลเกี่ยวกับพีชคณิต แต่คุณจะใช้กราฟแทนกราฟได้อย่างไร? ดูเหมือนว่าคุณต้องมีพอยน์เตอร์ ฉันเดาว่าคุณอาจมีบางอย่างเช่น type Nodetag = String type Neighbours = [Nodetag] data Node a = Node a Nodetag Neighbours และนั่นจะสามารถใช้งานได้ อย่างไรก็ตามมันรู้สึกแยกออกเล็กน้อย การเชื่อมโยงระหว่างโหนดต่างๆในโครงสร้างไม่ได้ "ให้ความรู้สึก" มั่นคงเท่ากับการเชื่อมโยงระหว่างองค์ประกอบก่อนหน้าและถัดไปในปัจจุบันในรายการหรือพ่อแม่และลูกของโหนดในทรี ฉันมีลางสังหรณ์ว่าการปรับเปลี่ยนพีชคณิตบนกราฟตามที่ฉันกำหนดไว้มันจะถูกขัดขวางอยู่บ้างจากระดับของทิศทางที่แนะนำผ่านระบบแท็ก โดยหลักแล้วมันคือความรู้สึกสงสัยและการรับรู้ถึงความไม่สมดุลที่ทำให้ฉันถามคำถามนี้ มีวิธีการกำหนดกราฟใน Haskell ที่ดีกว่า / สวยงามกว่าทางคณิตศาสตร์หรือไม่? หรือฉันสะดุดกับบางสิ่งบางอย่างที่ยาก / พื้นฐานโดยเนื้อแท้? โครงสร้างข้อมูลแบบเรียกซ้ำนั้นดูดี แต่ดูเหมือนจะเป็นอย่างอื่น โครงสร้างข้อมูลอ้างอิงตนเองในความหมายที่แตกต่างกันว่าต้นไม้และรายการอ้างอิงตนเองอย่างไร เช่นเดียวกับรายการและต้นไม้เป็นข้อมูลอ้างอิงตัวเองในระดับประเภท แต่กราฟจะอ้างอิงตัวเองในระดับค่า แล้วเกิดอะไรขึ้น?

3
Hindley-Milner คืออะไร?
ฉันเจอคำนี้ฮินด์ลีย์ - มิลเนอร์และฉันไม่แน่ใจว่าเข้าใจความหมายหรือไม่ ฉันได้อ่านโพสต์ต่อไปนี้: Steve Yegge - Dynamic Languages ​​Strike Back Steve Yegge - ปัญหา Pinocchio Daniel Spiewak - Hindley-Milner คืออะไร? (แล้วทำไมถึงเท่ล่ะ?) แต่ไม่มีรายการเดียวสำหรับคำนี้ในวิกิพีเดียซึ่งมักจะให้คำอธิบายสั้น ๆ แก่ฉัน หมายเหตุ - ตอนนี้มีการเพิ่มหนึ่งรายการ มันคืออะไร? ภาษาและเครื่องมือใดบ้างที่ใช้หรือใช้ คุณช่วยเสนอคำตอบที่กระชับได้ไหม

24
รหัสที่เป็นประโยชน์ซึ่งใช้ลด ()? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ใครที่นี่มีโค้ดที่เป็นประโยชน์ซึ่งใช้ฟังก์ชันลด () ใน python หรือไม่? มีรหัสอื่นนอกเหนือจาก + และ * ปกติที่เราเห็นในตัวอย่างหรือไม่? อ้างถึงFate of reduction () ใน Python 3000โดย GvR

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.