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

Haskell เป็นภาษาโปรแกรมที่ใช้งานได้มีการพิมพ์แบบสแตติกการประเมินแบบสันหลังยาวการขนานอย่างกว้างขวางและการสนับสนุนการทำงานพร้อมกัน

30
Monad คืออะไร
เมื่อเร็ว ๆ นี้เมื่อดูที่ Haskell สิ่งที่จะเป็นคำอธิบายสั้น ๆ รวบรัดและเป็นประโยชน์เกี่ยวกับสิ่งที่เป็นหลัก monad คืออะไร? ฉันพบว่าคำอธิบายส่วนใหญ่ที่ฉันเจอนั้นไม่สามารถเข้าถึงได้อย่างเป็นธรรมและขาดรายละเอียดในทางปฏิบัติ

6
ส่วนใดของ Hindley-Milner ที่คุณไม่เข้าใจ
ฉันสาบานว่าเคยเป็นเสื้อยืดขายที่มีคำอมตะ: ส่วนไหนของ คุณไม่เข้าใจเหรอ ในกรณีของฉันคำตอบก็คือ ... ทั้งหมด! โดยเฉพาะอย่างยิ่งฉันมักเห็นสัญกรณ์แบบนี้ในเอกสาร Haskell แต่ฉันก็ไม่รู้ว่ามันหมายถึงอะไร ฉันไม่รู้ว่ามันควรจะเป็นสาขาวิชาคณิตศาสตร์ ฉันรู้จักตัวอักษรของตัวอักษรกรีกแน่นอนและสัญลักษณ์เช่น "∉" (ซึ่งโดยปกติจะหมายถึงสิ่งที่ไม่ใช่องค์ประกอบของชุด) ในทางกลับกันฉันไม่เคยเห็น "⊢" มาก่อน ( Wikipedia อ้างว่าอาจหมายถึง "พาร์ติชัน" ) ฉันไม่คุ้นเคยกับการใช้ vinculum ที่นี่ (มักจะหมายถึงส่วน แต่ที่ไม่ปรากฏจะเป็นกรณีที่นี่.) ถ้าอย่างน้อยก็มีคนบอกฉันได้ว่าจะเริ่มมองหาที่ใดเพื่อเข้าใจความหมายของสัญลักษณ์ทะเลนี้นั่นจะเป็นประโยชน์

15
เริ่มต้นกับ Haskell
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ สองสามวันที่ฉันพยายามล้อมรอบกระบวนทัศน์การเขียนโปรแกรมการทำงานใน Haskell ฉันได้ทำสิ่งนี้โดยการอ่านบทช่วยสอนและดูหน้าจอ screencasts แต่ดูเหมือนว่าไม่มีอะไรจะติด ตอนนี้ในการเรียนรู้ภาษาที่จำเป็นต่างๆ / OO (เช่น C, Java, PHP) การออกกำลังกายเป็นวิธีที่ดีสำหรับฉันที่จะไป แต่เนื่องจากฉันไม่รู้จริง ๆ ว่า Haskell มีความสามารถอะไรและเนื่องจากมีแนวคิดใหม่มากมายที่จะใช้ฉันจึงไม่รู้ว่าจะเริ่มจากตรงไหน ดังนั้นคุณเรียนรู้ Haskell ได้อย่างไร อะไรทำให้คุณ "แตกน้ำแข็ง" จริงๆ? นอกจากนี้ยังมีแนวคิดที่ดีสำหรับการฝึกหัดเริ่มต้นไหม?

6
Monad เป็นเพียง monoid ในประเภท endofunctors ปัญหาคืออะไร
ใครบอกว่าต่อไปนี้ก่อน? Monad เป็นเพียง monoid ในประเภท endofunctors ปัญหาคืออะไร และในบันทึกย่อที่สำคัญน้อยกว่านี่คือความจริงและถ้าเป็นเช่นนั้นคุณสามารถให้คำอธิบายได้ (หวังว่าจะมีคนที่ไม่เข้าใจประสบการณ์ของ Haskell มาก)

12
อะไรคือความแตกต่างระหว่าง . (จุด) และ $ (เครื่องหมายดอลลาร์)?
อะไรคือความแตกต่างระหว่างจุด(.)และเครื่องหมายดอลลาร์($)? ดังที่ฉันเข้าใจแล้วพวกเขาทั้งคู่เป็นน้ำตาลประโยคโดยไม่จำเป็นต้องใช้วงเล็บ

18
เปรียบเทียบความเร็วกับ Project Euler: C กับ Python เทียบกับ Erlang และ Haskell
ฉันได้นำปัญหา # 12จากProject Euler มาเป็นแบบฝึกหัดการเขียนโปรแกรมและเพื่อเปรียบเทียบการใช้งานของฉันใน C, Python, Erlang และ Haskell เพื่อให้ได้เวลาดำเนินการที่สูงขึ้นฉันค้นหาหมายเลขสามเหลี่ยมแรกที่มีตัวหารมากกว่า 1,000 ตัวแทนที่จะเป็น 500 ตามที่ระบุในปัญหาดั้งเดิม ผลที่ได้คือ: ค: lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c lorenzo@enzo:~/erlang$ time ./euler12.bin 842161320 real 0m11.074s user 0m11.070s sys 0m0.000s งูหลาม: lorenzo@enzo:~/erlang$ time ./euler12.py 842161320 real 1m16.632s user 1m16.370s sys 0m0.250s Python กับ PyPy: lorenzo@enzo:~/Downloads/pypy-c-jit-43780-b590cf6de419-linux64/bin$ time ./pypy …

13
ฟังก์ชั่นเวลามีอยู่ในการตั้งโปรแกรมการทำงานอย่างไร
ฉันต้องยอมรับว่าฉันไม่รู้เกี่ยวกับการเขียนโปรแกรมฟังก์ชั่นมากนัก ฉันอ่านเกี่ยวกับมันจากที่นี่และที่นั่นและได้รู้ว่าในการเขียนโปรแกรมเชิงฟังก์ชันฟังก์ชั่นจะคืนค่าเอาต์พุตเดียวกันสำหรับอินพุตเดียวกันไม่ว่าจะเรียกใช้ฟังก์ชันกี่ครั้งก็ตาม มันเหมือนกับฟังก์ชันทางคณิตศาสตร์ที่ประเมินผลลัพธ์เดียวกันสำหรับค่าเดียวกันของพารามิเตอร์อินพุตที่เกี่ยวข้องในการแสดงออกของฟังก์ชัน ตัวอย่างเช่นพิจารณาสิ่งนี้: f(x,y) = x*x + y; // It is a mathematical function ไม่ว่าคุณจะใช้ไปกี่ครั้งf(10,4)ก็ตามคุณค่าของมันจะยังคงอยู่ตลอด104ไป ดังนั้นทุกที่ที่คุณเขียนf(10,4)คุณสามารถแทนที่ด้วย104โดยไม่ต้องเปลี่ยนค่าของการแสดงออกทั้งหมด คุณสมบัตินี้เรียกว่าการอ้างอิงโปร่งใสของการแสดงออก ตามที่ Wikipedia พูดว่า ( ลิงค์ ) ในทางกลับกันในฟังก์ชั่นรหัสค่าเอาท์พุทของฟังก์ชั่นขึ้นอยู่กับอาร์กิวเมนต์ที่ใส่เข้าไปในฟังก์ชั่นเท่านั้นดังนั้นการเรียกใช้ฟังก์ชัน f สองครั้งด้วยค่าเดียวกันสำหรับอาร์กิวเมนต์ x จะให้ผลลัพธ์ที่เหมือนกัน f (x) ทั้งสองครั้ง ฟังก์ชั่นเวลา (ซึ่งจะคืนค่าเวลาปัจจุบัน ) สามารถมีอยู่ในการตั้งโปรแกรมการทำงานหรือไม่ ถ้าใช่แล้วมันจะมีอยู่ได้อย่างไร? มันไม่ได้ละเมิดหลักการของฟังก์ชั่นการเขียนโปรแกรมหรือไม่? มันละเมิดความโปร่งใสในการอ้างอิงซึ่งเป็นหนึ่งในคุณสมบัติของการเขียนโปรแกรมการทำงาน (ถ้าฉันเข้าใจถูกต้อง) หรือถ้าไม่, แล้วเราจะรู้เวลาปัจจุบันในการโปรแกรมเชิงฟังก์ชันได้อย่างไร?

8
การออกแบบขนาดใหญ่ใน Haskell [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน3 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ เป็นวิธีที่ดีในการออกแบบ / โครงสร้างโปรแกรมการทำงานขนาดใหญ่โดยเฉพาะใน Haskell อะไร ฉันได้ผ่านบทเรียนมากมาย (เขียนโครงการด้วยตัวเองเป็นที่ชื่นชอบกับ Real World Haskell ในไม่ช้า) - แต่โปรแกรมส่วนใหญ่มีขนาดค่อนข้างเล็กและมีวัตถุประสงค์เดียว นอกจากนี้ฉันไม่คิดว่าพวกเขาบางคนจะสง่างามเป็นพิเศษ (ตัวอย่างเช่นตารางการค้นหาที่กว้างใหญ่ใน WYAS) ตอนนี้ฉันต้องการเขียนโปรแกรมที่มีขนาดใหญ่ขึ้นด้วยชิ้นส่วนที่เคลื่อนไหวได้มากขึ้น - รับข้อมูลจากแหล่งข้อมูลที่แตกต่างกันมากมายทำความสะอาดประมวลผลในรูปแบบต่าง ๆ แสดงในส่วนติดต่อผู้ใช้ยืนยันมันสื่อสารผ่านเครือข่ายเป็นต้น โครงสร้างที่ดีที่สุดอย่างหนึ่งของรหัสดังกล่าวคืออ่านง่ายบำรุงรักษาและปรับให้เข้ากับความต้องการที่เปลี่ยนแปลงได้หรือไม่ มีวรรณกรรมจำนวนมากตอบคำถามเหล่านี้สำหรับโปรแกรมเชิงวัตถุขนาดใหญ่ แนวคิดเช่น MVC รูปแบบการออกแบบ ฯลฯ เป็นข้อกำหนดที่เหมาะสมสำหรับการตระหนักถึงเป้าหมายในวงกว้างเช่นการแยกความกังวลและการใช้ซ้ำในสไตล์ OO นอกจากนี้ภาษาที่มีความจำเป็นรุ่นใหม่ยังให้ความสำคัญกับรูปแบบ 'การออกแบบเมื่อคุณเติบโต' ซึ่งในความเห็นของฉันสามเณร Haskell ดูเหมือนว่าจะเหมาะสมน้อยกว่า มีวรรณกรรมที่เทียบเท่ากับ Haskell ไหม สวนสัตว์ของโครงสร้างการควบคุมที่แปลกใหม่มีให้ใช้งานในการเขียนโปรแกรมการทำงานอย่างไร (monads, arrow, applicative …

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

15
ฟังก์ชั่นการเขียนโปรแกรม GUI สามารถทำได้หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันเพิ่งเจอข้อผิดพลาด FP (พยายามเรียนรู้ Haskell) และฉันก็ประทับใจกับสิ่งที่ฉันเห็นมามาก (ฟังก์ชั่นชั้นหนึ่งการประเมินที่ขี้เกียจและสารพัดอื่น ๆ ) ฉันยังไม่มีความเชี่ยวชาญ แต่ฉันได้เริ่มเข้าใจแล้วว่าเหตุผล "ตามหน้าที่" ง่ายกว่าเหตุผลสำหรับอัลกอริธึมพื้นฐาน (และฉันมีปัญหาในการกลับไปที่ที่ฉันต้องทำ) พื้นที่หนึ่งที่ FP ในปัจจุบันดูเหมือนจะค่อนข้างแบนอย่างไรก็ตามคือการเขียนโปรแกรม GUI วิธี Haskell ดูเหมือนว่าจะห่อชุดเครื่องมือ GUI ที่จำเป็น (เช่น GTK + หรือ wxWidgets) และใช้บล็อก "do" เพื่อจำลองสไตล์ที่จำเป็น ฉันไม่ได้ใช้ F # แต่ความเข้าใจของฉันคือมันใช้ OOP กับ. NET class เห็นได้ชัดว่ามีเหตุผลที่ดีสำหรับเรื่องนี้ - การเขียนโปรแกรม GUI ปัจจุบันเป็นเรื่องของ …

1
ความไวของความเชี่ยวชาญอัตโนมัติใน GHC
จากเอกสารสำหรับ GHC 7.6: [Y] คุณไม่ต้องการแม้แต่ความเชี่ยวชาญเป็นพิเศษในตอนแรก เมื่อทำการรวบรวมโมดูล M เครื่องมือเพิ่มประสิทธิภาพของ GHC (พร้อม -O) จะพิจารณาฟังก์ชั่นโอเวอร์โหลดระดับสูงสุดแต่ละรายการที่ประกาศใน M โดยอัตโนมัติและเชี่ยวชาญสำหรับประเภทต่าง ๆ ที่เรียกว่าเป็น M เครื่องมือเพิ่มประสิทธิภาพจะพิจารณาฟังก์ชั่นโอเวอร์โหลด และเชี่ยวชาญสำหรับประเภทต่าง ๆ ที่มันถูกเรียกว่าใน M และ ยิ่งไปกว่านั้นเมื่อได้รับ SPECIALIZE pragma สำหรับฟังก์ชั่น f GHC จะสร้างความเชี่ยวชาญเฉพาะสำหรับฟังก์ชั่นประเภทเกินพิกัดใด ๆ ที่เรียกโดย f หากอยู่ในโมดูลเดียวกันกับ SPECAGIZE pragma หรือหากไม่มีการเชื่อมโยง; และอื่น ๆ ต่อเนื่อง ดังนั้น GHC ควรใช้ฟังก์ชันบางส่วน / มากที่สุด / ทั้งหมด (?) ที่ทำเครื่องหมายINLINABLE โดยไม่มี …
392 haskell  ghc 

6
Monads ฟรีคืออะไร
ผมเคยเห็นในระยะฟรี Monadปรากฏขึ้นทุก ขณะนี้ และ จากนั้นบางครั้ง แต่ทุกคนก็ดูเหมือนว่าจะใช้ / หารือเกี่ยวกับพวกเขาโดยไม่ให้คำอธิบายเกี่ยวกับสิ่งที่พวกเขาเป็น ดังนั้นพระอะไรบ้าง (ฉันว่าฉันคุ้นเคยกับ monads และพื้นฐานของ Haskell แต่มีเพียงความรู้คร่าวๆเกี่ยวกับทฤษฎีหมวดหมู่)

7
ทำไมเราต้องการพระ
ในความเห็นต่ำต้อยของฉันคำตอบสำหรับคำถามที่มีชื่อเสียง"Monad คืออะไร" โดยเฉพาะคนที่ได้รับการโหวตมากที่สุดพยายามที่จะอธิบายสิ่งที่เป็น monad อย่างชัดเจนโดยไม่ต้องอธิบายว่าทำไม monads มีความจำเป็นจริงๆ พวกเขาสามารถอธิบายได้ว่าเป็นวิธีแก้ปัญหาหรือไม่
366 haskell  monads 

7
แหล่ง Haskell ที่ดีในการอ่านและเรียนรู้จาก [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา โปรแกรมโอเพ่นซอร์สอะไรบ้างที่ใช้ Haskell และถือได้ว่าเป็นHaskell สมัยใหม่ที่มีคุณภาพดี ? ยิ่งรหัสฐานใหญ่ขึ้นเท่าไหร่ก็ยิ่งดีเท่านั้น ฉันต้องการเรียนรู้จากซอร์สโค้ดของพวกเขา ฉันรู้สึกว่าฉันผ่านจุดเรียนรู้จากตัวอย่างโค้ดขนาดเล็กซึ่งมักจะเป็นเรื่องลึกลับและโลกใบเล็ก ฉันต้องการดูว่ามีการจัดโครงสร้างโค้ดอย่างไรบ้าง Monads โต้ตอบอย่างไรเมื่อคุณมีหลายสิ่งหลายอย่างเกิดขึ้น (การบันทึก I / O การกำหนดค่า ฯลฯ )

4
“ coalgebra” หมายถึงอะไรในบริบทของการเขียนโปรแกรม
ฉันเคยได้ยินคำว่า "coalgebras" หลายครั้งในการเขียนโปรแกรมการทำงานและวงกลม PLT โดยเฉพาะอย่างยิ่งเมื่อการสนทนาเกี่ยวกับวัตถุ, comonads, เลนส์และอื่น ๆ Googling คำนี้ให้หน้าซึ่งให้คำอธิบายทางคณิตศาสตร์ของโครงสร้างเหล่านี้ซึ่งฉันเข้าใจยากมาก ใครช่วยอธิบายหน่อยได้ว่า coalgebras มีความหมายอย่างไรในบริบทของการเขียนโปรแกรมความสำคัญของพวกมันคืออะไรและพวกมันเกี่ยวข้องกับวัตถุและ comonads อย่างไร

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