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

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

11
เหตุใดเครื่องมือด่วนแบบมินิมอลเช่น Haskell จึงไม่ใช่ Quicksort ที่ "จริง"
เว็บไซต์ของ Haskell แนะนำฟังก์ชัน Quicksort 5 บรรทัดที่น่าสนใจมากดังที่แสดงด้านล่าง quicksort [] = [] quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater) where lesser = filter (< p) xs greater = filter (>= p) xs พวกเขายังรวมถึง"ทรู quicksort ใน C" // To sort array a[] of size n: qsort(a,0,n-1) void qsort(int a[], int …

5
Haskell: ที่ไหนกับให้
ฉันใหม่เพื่อ Haskell และฉันสับสนมากจากไหนเมื่อเทียบกับLet ดูเหมือนทั้งสองจะมีจุดประสงค์ที่คล้ายกัน ฉันได้อ่านการเปรียบเทียบเล็กน้อยระหว่างWhereกับLetแต่ฉันมีปัญหาในการแยกแยะว่าเมื่อใดควรใช้ ใครช่วยกรุณาให้บริบทบางอย่างหรืออาจเป็นตัวอย่างบางส่วนที่แสดงให้เห็นว่าเมื่อใดควรใช้อย่างอื่น ที่ไหนเทียบกับ whereประโยคสามารถกำหนดเฉพาะในระดับของการกำหนดฟังก์ชั่น โดยปกติแล้วจะเหมือนกับขอบเขตของletคำจำกัดความ ความแตกต่างเพียงอย่างเดียวคือเมื่อยามที่มีการใช้ ขอบเขตของwhereประโยคขยายครอบคลุมยามทั้งหมด ในทางตรงกันข้ามขอบเขตของletนิพจน์เป็นเพียงประโยคฟังก์ชันปัจจุบันและตัวป้องกันถ้ามี แผ่นโกง Haskell Haskell วิกิพีเดียมีรายละเอียดมากและให้หลาย ๆ กรณี แต่จะใช้ตัวอย่างสมมุติ ฉันพบว่าคำอธิบายสั้นเกินไปสำหรับผู้เริ่มต้น ข้อดีของการให้ : f :: State s a f = State $ \x -> y where y = ... x ... Control.Monad.State จะไม่ทำงานเนื่องจากโดยที่อ้างถึงรูปแบบที่ตรงกับ f = โดยที่ x ไม่อยู่ในขอบเขต ในทางตรงกันข้ามถ้าคุณเริ่มต้นด้วยการปล่อยให้คุณก็จะไม่มีปัญหา Haskell Wiki …
118 haskell  keyword  where  let 

4
การเป็นตัวแทนของ Haskell ใดที่แนะนำสำหรับอาร์เรย์พิกเซลแบบ 2 มิติที่ไม่มีกล่องที่มีพิกเซลนับล้าน
ฉันต้องการแก้ไขปัญหาการประมวลผลภาพใน Haskell ฉันกำลังทำงานกับทั้ง bitonal (บิตแมป) และภาพสีที่มีพิกเซลหลายล้านพิกเซล ฉันมีคำถามมากมาย: ฉันควรเลือกอะไรระหว่างVector.UnboxedกับUArray? ทั้งคู่เป็นอาร์เรย์ที่ไม่มีกล่อง แต่Vectorดูเหมือนว่าสิ่งที่เป็นนามธรรมนั้นมีการโฆษณาอย่างมากโดยเฉพาะอย่างยิ่งเกี่ยวกับลูปฟิวชัน คือVectorมักจะดีขึ้นหรือไม่ ถ้าไม่ควรใช้การแทนค่าเมื่อใด สำหรับภาพสีฉันต้องการเก็บสามเท่าของจำนวนเต็ม 16 บิตหรือสามเท่าของตัวเลขทศนิยมตำแหน่งเดียวที่มีความแม่นยำสูง เพื่อจุดประสงค์นี้เป็นอย่างใดอย่างหนึ่งVectorหรือUArrayง่ายต่อการใช้งาน? นักแสดงมากขึ้น? สำหรับภาพ bitonal ฉันจะต้องจัดเก็บเพียง 1 บิตต่อพิกเซล มีประเภทข้อมูลที่กำหนดไว้ล่วงหน้าที่สามารถช่วยฉันได้ที่นี่โดยการบรรจุพิกเซลหลาย ๆ คำลงในคำหรือฉันเป็นของตัวเอง สุดท้ายอาร์เรย์ของฉันเป็นสองมิติ ฉันคิดว่าฉันสามารถจัดการกับอินดิเคเตอร์พิเศษที่กำหนดโดยการแทนค่าเป็น "อาร์เรย์อาร์เรย์" (หรือเวกเตอร์ของเวกเตอร์) แต่ฉันต้องการสิ่งที่เป็นนามธรรมที่รองรับการทำแผนที่ดัชนี มีใครแนะนำอะไรจากไลบรารีมาตรฐานหรือจาก Hackage ได้บ้าง? ฉันเป็นโปรแกรมเมอร์ที่ใช้งานได้และไม่จำเป็นต้องกลายพันธุ์ :-)

3
ไลบรารี Haskell ที่ดีที่สุดในการใช้งานโปรแกรมคืออะไร [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ หากฉันจะนำโปรแกรมไปใช้ในการผลิตมีหลายสิ่งที่ฉันต้องการให้โปรแกรมนั้นทำเพื่อที่จะพิจารณาว่า "ใช้งานได้" นั่นคือการทำงานและบำรุงรักษาด้วยวิธีที่วัดผลได้และตรวจสอบได้โดยทั้งวิศวกรและเจ้าหน้าที่ฝ่ายปฏิบัติการ สำหรับวัตถุประสงค์ของฉันโปรแกรมที่ดำเนินการจะต้อง: สามารถบันทึกได้หลายระดับ (เช่นการดีบักคำเตือน ฯลฯ ) สามารถรวบรวมและแบ่งปันเมตริก / สถิติเกี่ยวกับประเภทของงานที่โปรแกรมกำลังทำและระยะเวลาที่งานนั้นใช้ ตามหลักการแล้วเมตริกที่รวบรวมจะมีอยู่ในรูปแบบที่เข้ากันได้กับเครื่องมือการตรวจสอบที่ใช้กันทั่วไปเช่นGangliaหรืออาจเป็นแบบ munged ก็ได้ สามารถกำหนดค่าได้โดยดีอย่างยิ่งผ่านระบบที่อนุญาตให้คุณสมบัติที่กำหนดค่าไว้ในโปรแกรมที่รันอยู่เพื่ออัปเดตโดยไม่ต้องรีสตาร์ทโปรแกรมดังกล่าว สามารถปรับใช้กับเซิร์ฟเวอร์ระยะไกลด้วยวิธีที่ทำซ้ำได้ ในโลกของ Scala มีห้องสมุดที่ดีสำหรับจัดการกับข้อกำหนดอย่างน้อยสามข้อแรก ตัวอย่าง: Logulaสำหรับการบันทึก เมตริกหรือนกกระจอกเทศสำหรับรวบรวมและรายงานเมตริก ConfiggyหรือFigสำหรับการกำหนดค่า สำหรับการปรับใช้แนวทางหนึ่งที่ใช้ในโลกของ Scala คือการรวมไบต์โค้ดและไลบรารีที่ประกอบด้วยโปรแกรมของตนเข้าด้วยกันเช่นแอสเซมบลี - sbtจากนั้นดันบันเดิลผลลัพธ์ ("fat JAR") ไปยังเซิร์ฟเวอร์ระยะไกลด้วยเครื่องมือเช่นCapistranoที่รันคำสั่งแบบขนานบน SSH นี่ไม่ใช่ปัญหาที่จำเป็นต้องใช้เครื่องมือเฉพาะภาษา แต่ฉันสงสัยว่ามีเครื่องมือดังกล่าวอยู่ในชุมชน Haskell หรือไม่ อาจมีห้องสมุดของ Haskell ที่มีลักษณะที่ฉันได้อธิบายไว้ข้างต้น ฉันต้องการทราบว่าห้องสมุดใดที่มีให้บริการ …
115 logging  haskell  metrics 

1
เธรด Haskell ล้นแม้จะใช้หน่วยความจำทั้งหมดเพียง 22Mb?
ฉันกำลังพยายามขนานเรย์ - เทรเซอร์ ซึ่งหมายความว่าฉันมีรายการการคำนวณขนาดเล็กที่ยาวมาก โปรแกรมวานิลลาทำงานบนฉากเฉพาะใน 67.98 วินาทีและ 13 MB ของการใช้หน่วยความจำทั้งหมดและผลผลิต 99.2% ในความพยายามครั้งแรกของฉันฉันใช้กลยุทธ์คู่ขนานที่parBufferมีขนาดบัฟเฟอร์ 50 ฉันเลือกparBufferเพราะมันเดินผ่านรายการได้เร็วที่สุดเท่าที่ประกายไฟจะหมดและไม่บังคับกระดูกสันหลังของรายการเช่นparListซึ่งจะใช้หน่วยความจำมาก เนื่องจากรายการยาวมาก ด้วย-N2มันทำงานในเวลา 100.46 วินาทีและ 14 MB ของการใช้หน่วยความจำทั้งหมดและผลผลิต 97.8% ข้อมูลจุดประกายคือ:SPARKS: 480000 (476469 converted, 0 overflowed, 0 dud, 161 GC'd, 3370 fizzled) ประกายไฟที่มอดลงในสัดส่วนที่มากบ่งบอกว่าความละเอียดของประกายไฟมีขนาดเล็กเกินไปดังนั้นต่อไปฉันจึงลองใช้กลยุทธ์parListChunkซึ่งแยกรายการออกเป็นชิ้น ๆ และสร้างประกายสำหรับแต่ละชิ้น ฉันได้ผลลัพธ์ที่ดีที่สุดด้วยขนาดของ0.25 * imageWidth. โปรแกรมทำงานใน 93.43 วินาทีและ 236 MB ของการใช้หน่วยความจำทั้งหมดและประสิทธิภาพการผลิต 97.3% ข้อมูลจุดประกายคือ: SPARKS: 2400 …

4
Fibonacci-function นี้จำได้อย่างไร?
fibonacci-function นี้บันทึกโดยกลไกใด? fib = (map fib' [0..] !!) where fib' 1 = 1 fib' 2 = 1 fib' n = fib (n-2) + fib (n-1) และในบันทึกที่เกี่ยวข้องเหตุใดเวอร์ชันนี้จึงไม่เป็นเช่นนั้น fib n = (map fib' [0..] !! n) where fib' 1 = 1 fib' 2 = 1 fib' n = fib (n-2) + fib …

1
ทำไมฟังก์ชัน "ไม่ทำอะไร" ของ Haskell, id, ใช้หน่วยความจำมากมาย
Haskell มีฟังก์ชัน Identity ซึ่งส่งคืนอินพุตที่ไม่เปลี่ยนแปลง คำจำกัดความนั้นง่ายมาก: id :: a -> a id x = x ดังนั้นเพื่อความสนุกสนานสิ่งนี้ควรส่งออก8: f = id id id id id id id id id id id id id id id id id id id id id id id id id id id main = print $ f 8 …
112 haskell  ghc 

10
อินเตอร์เฟสของ Java และคลาสประเภทของ Haskell: ความแตกต่างและความคล้ายคลึงกัน?
ในขณะที่ฉันเรียนรู้ Haskell ฉันสังเกตเห็นประเภทของคลาสซึ่งน่าจะเป็นสิ่งประดิษฐ์ที่ยอดเยี่ยมที่มีต้นกำเนิดจาก Haskell อย่างไรก็ตามในหน้า Wikipedia ในประเภทคลาส : โปรแกรมเมอร์กำหนดคลาสประเภทโดยการระบุชุดของฟังก์ชันหรือชื่อคงที่พร้อมกับประเภทที่เกี่ยวข้องซึ่งต้องมีอยู่สำหรับทุกประเภทที่เป็นของคลาส ซึ่งดูเหมือนจะค่อนข้างใกล้เคียงกับอินเทอร์เฟซของ Java สำหรับฉัน (อ้างถึงหน้าอินเทอร์เฟซ (Java) ของ Wikipedia ): อินเทอร์เฟซในภาษาโปรแกรม Java เป็นประเภทนามธรรมที่ใช้เพื่อระบุส่วนต่อประสาน (ในความหมายทั่วไปของคำศัพท์) ที่คลาสต้องใช้ สองสิ่งนี้ดูค่อนข้างคล้ายกัน: คลาสประเภท จำกัด พฤติกรรมของประเภทในขณะที่อินเทอร์เฟซ จำกัด พฤติกรรมของคลาส ฉันสงสัยว่าความแตกต่างและความคล้ายคลึงกันระหว่างประเภทคลาสใน Haskell และอินเทอร์เฟซใน Java คืออะไรหรืออาจแตกต่างกันโดยพื้นฐาน แก้ไข:ผมสังเกตเห็นแม้ยอมรับ haskell.org ว่าพวกเขามีความคล้ายคลึงกัน ถ้าพวกมันคล้ายกันมาก (หรือพวกมัน?) แล้วทำไม type class ถึงได้รับการยกย่องเช่นนี้? แก้ไขเพิ่มเติม:ว้าวคำตอบที่ยอดเยี่ยมมากมาย! ฉันเดาว่าฉันจะต้องปล่อยให้ชุมชนตัดสินใจว่าอันไหนดีที่สุด อย่างไรก็ตามในขณะที่อ่านคำตอบทั้งหมดของพวกเขาดูเหมือนจะเป็นเพียงแค่บอกว่า"มีหลายสิ่ง typeclass สามารถทำในขณะที่อินเตอร์เฟซที่ไม่สามารถหรือต้องรับมือกับข้อมูลทั่วไป" ฉันอดไม่ได้ที่จะสงสัยว่ามีอินเทอร์เฟซใดบ้างที่สามารถทำได้ในขณะที่แว่นตาพิมพ์ไม่สามารถทำได้ นอกจากนี้ฉันสังเกตเห็นว่า Wikipedia …

4
ข้อผิดพลาดในการแยกวิเคราะห์ข้อผิดพลาด Haskell เมื่อป้อนข้อมูล `= '
ฉันใหม่กับ Haskell และหลังจากเริ่มghciฉันลอง: f x = 2 * x และฉันได้รับ: <interactive>:1:4: parse error on input `=' ซึ่งฉันไม่เข้าใจ น่าแปลกที่มันใช้งานได้ดีมาก่อน ฉันคิดว่าฉันได้กำหนดค่า Haskell ผิด การติดตั้ง ghc6 ใหม่ไม่สามารถแก้ปัญหาได้ สำหรับข้อมูลฉันใช้ Ubuntu 10.4 และเวอร์ชันของ ghc6 คือ 6.12.1-12
111 haskell 

6
จุดประสงค์ของ Rank2Types คืออะไร?
ฉันไม่ค่อยเชี่ยวชาญเรื่อง Haskell ดังนั้นนี่อาจเป็นคำถามที่ง่ายมาก Rank2Typesแก้ข้อ จำกัด ด้านภาษาอะไรบ้าง? ฟังก์ชั่นใน Haskell ไม่รองรับอาร์กิวเมนต์ polymorphic แล้วหรือ?


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

4
Haskell: <*> ออกเสียงอย่างไร? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ คุณออกเสียงฟังก์ชันเหล่านี้ในประเภทการใช้งานอย่างไร: (&lt;*&gt;) :: f (a -&gt; b) -&gt; f a -&gt; f b (*&gt;) :: f a -&gt; f b -&gt; f b (&lt;*) :: f a -&gt; f b -&gt; f a (นั่นคือถ้าพวกเขาไม่ใช่ตัวดำเนินการพวกเขาจะเรียกว่าอะไร?) โปรดทราบว่าหากคุณสามารถเปลี่ยนชื่อpureเป็นสิ่งที่เป็นมิตรกับนักคณิตศาสตร์ที่ไม่ใช่นักคณิตศาสตร์ได้คุณจะเรียกมันว่าอะไร?
109 haskell  operators 

5
เหตุใด Prelude.read ของ Haskell จึงไม่ส่งคืนอาจจะ?
มีเหตุผลที่ดีหรือไม่ที่ประเภทของ Prelude.read คือ read :: Read a =&gt; String -&gt; a แทนที่จะคืนMaybeค่า? read :: Read a =&gt; String -&gt; Maybe a เนื่องจากสตริงอาจไม่สามารถแยกวิเคราะห์ได้ Haskell จึงจะไม่เป็นธรรมชาติมากกว่านี้หรือ? หรือแม้แต่สตริงเดิมจะมีสตริงเดิมEither String aอยู่ที่ไหนLeftหากไม่ได้แยกวิเคราะห์และRightผลลัพธ์จะเป็นอย่างไร แก้ไข: ฉันไม่ได้พยายามให้คนอื่นเขียนกระดาษห่อหุ้มที่เกี่ยวข้องให้ฉัน เพียงแค่ขอความมั่นใจว่าทำได้อย่างปลอดภัย
109 parsing  haskell  types 

3
ความแตกต่างระหว่าง Cabal และ Stack คืออะไร?
เมื่อวานนี้ผมได้เรียนรู้เกี่ยวกับเครื่องมือ Haskell ใหม่ที่เรียกว่ากอง ในตอนแรกบลัชออนดูเหมือนว่าจะทำหน้าที่เดียวกับ Cabal แล้วอะไรคือความแตกต่างระหว่างพวกเขา? กองซ้อนแทน Cabal หรือไม่? ฉันควรใช้ Stack แทน Cabal ในกรณีใด Stack ทำอะไรที่ Cabal ทำไม่ได้?

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