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

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

10
องค์ประกอบของ Haskell (.) กับตัวดำเนินการไปข้างหน้าของ F # (|>)
ใน F # การใช้ตัวดำเนินการเดินหน้าท่อ|>เป็นเรื่องปกติ อย่างไรก็ตามใน Haskell ฉันเคยเห็นแค่การใช้องค์ประกอบของฟังก์ชัน(.)เท่านั้น ฉันเข้าใจว่ามันเกี่ยวข้องกันแต่มีเหตุผลด้านภาษาหรือไม่ที่ไม่ได้ใช้ไพพ์ฟอร์เวิร์ดใน Haskell หรือเป็นอย่างอื่น

10
ในภาษาที่ใช้งานได้จริงมีอัลกอริทึมในการรับฟังก์ชันผกผันหรือไม่?
ในภาษาที่ใช้งานได้อย่างแท้จริงเช่น Haskell มีอัลกอริทึมในการรับค่าผกผันของฟังก์ชัน (แก้ไข) เมื่อเป็น bijective หรือไม่? และมีวิธีเฉพาะเจาะจงในการตั้งโปรแกรมฟังก์ชันของคุณหรือไม่?

1
การเชื่อมต่อกับโครงสร้างและสหภาพที่ไม่ระบุชื่อกับ c2hs
เราจะไปเกี่ยวกับการเข้ารหัสโค้ด C ชิ้นนี้ในไฟล์. chs ได้อย่างไรเพื่อให้ c2hs สามารถแปลงเป็นสิ่งที่ค่อนข้างดีได้? typedef enum { MONOME_BUTTON_UP = 0x00, MONOME_BUTTON_DOWN = 0x01, MONOME_ENCODER_DELTA = 0x02, MONOME_ENCODER_KEY_UP = 0x03, MONOME_ENCODER_KEY_DOWN = 0x04, MONOME_TILT = 0x05, /* update this if you add event types */ MONOME_EVENT_MAX = 0x06 } monome_event_type_t; typedef struct monome monome_t; /* opaque data type …
100 haskell  c2hs 

2
ตัวตรวจสอบประเภทอนุญาตให้มีการเปลี่ยนประเภทที่ไม่ถูกต้องและโปรแกรมยังคงคอมไพล์
ในขณะที่พยายามแก้ไขปัญหาในโปรแกรมของฉัน (วงกลม 2 วงที่มีรัศมีเท่ากันถูกวาดให้มีขนาดต่างกันโดยใช้กลอส*) ฉันเจอสถานการณ์แปลก ๆ ในไฟล์ของฉันที่จัดการวัตถุฉันมีคำจำกัดความต่อไปนี้สำหรับPlayer: type Coord = (Float,Float) data Obj = Player { oPos :: Coord, oDims :: Coord } และในไฟล์หลักของฉันซึ่งนำเข้า Objects.hs ฉันมีคำจำกัดความดังต่อไปนี้: startPlayer :: Obj startPlayer = Player (0,0) 10 สิ่งนี้เกิดขึ้นเนื่องจากฉันเพิ่มและเปลี่ยนฟิลด์สำหรับผู้เล่นและลืมอัปเดตstartPlayerหลังจากนั้น (ขนาดของมันถูกกำหนดโดยตัวเลขเดียวเพื่อแสดงรัศมี แต่ฉันเปลี่ยนเป็น a Coordเพื่อแสดง (ความกว้างความสูง) ในกรณีที่ฉันเคยทำ ผู้เล่นวัตถุที่ไม่ใช่วงกลม) สิ่งที่น่าทึ่งคือโค้ดด้านบนคอมไพล์และรันแม้ว่าฟิลด์ที่สองจะผิดประเภท ตอนแรกฉันคิดว่าบางทีฉันอาจจะเปิดไฟล์เวอร์ชันต่างๆ แต่การเปลี่ยนแปลงใด ๆ กับไฟล์ใด ๆ จะแสดงในโปรแกรมที่คอมไพล์แล้ว ต่อไปฉันคิดว่าอาจจะstartPlayerไม่ถูกใช้ด้วยเหตุผลบางอย่าง …
100 haskell  types 

1
Elm Compiler ทำงานตลอดไปคอมพิวเตอร์เริ่มร้อน
ฉันไม่แน่ใจว่าอะไรเป็นสาเหตุของปัญหานี้ แต่ในโปรเจ็กต์ฉันกำลังสร้างคอมไพเลอร์ใช้เวลาหลายชั่วโมงในการคอมไพล์โมดูล ขนาดรวมของ codebase ของฉันคือ 352KB แต่ไม่มีโมดูลใดที่มีขนาดใหญ่เกิน 10KB ฉันใช้พอร์ต Native แต่มันเป็นเรื่องเล็กน้อยมาก ฉันแค่ดึงDate.now()มันมา มีอะไรที่รู้จักกันดีที่จะทำให้คอมไพเลอร์ elm ต้องใช้เวลาตลอดไปในการรวบรวม? ฉันไม่มีการอ้างอิงมากนัก แต่ฉันใช้ Html เป็นจำนวนมาก ฉันจะขอบคุณคำแนะนำใด ๆ เกี่ยวกับสิ่งที่จะทำให้เกิดสิ่งนี้ แก้ไข ดังนั้นปรากฎว่านิพจน์กรณีใหญ่จะทำให้เครื่องมือเพิ่มประสิทธิภาพใช้เวลานานโดยเท่ากับ 0.16 นี่คือการอภิปราย on Elm-พูดคุยนำขึ้นปัญหาและสรุปสาระสำคัญของการจับคู่กรณีที่น่ารังเกียจ ฉันเดาว่าต้องละเอียดและเก็บแครอทไว้ที่นั่นทำไมคอมไพเลอร์ของ elm ถึงใช้เส้นทางนี้สำหรับการจับคู่กรณี เกิดอะไรขึ้นที่นี่? เหตุใดคอมไพเลอร์จึงใช้เวลานานกว่าหนึ่งชั่วโมงในการปรับแต่งรูปแบบที่ตรงกันกว่า 60+ รูปแบบในคำสั่ง case

3
จุดของแผนที่ใน Haskell คืออะไรเมื่อมี fmap?
ทุกที่ที่ฉันได้พยายามใช้map, fmapได้ทำงานได้เป็นอย่างดี เหตุใดผู้สร้าง Haskell จึงรู้สึกว่าต้องการmapฟังก์ชัน เป็นเพียงสิ่งที่เรียกกันในปัจจุบันfmapและfmapสามารถลบออกจากภาษาได้หรือไม่?
100 haskell 


5
มีใครสามารถอธิบายฟังก์ชัน traverse ใน Haskell ได้หรือไม่?
ฉันพยายามและล้มเหลวในการ grok ฟังก์ชั่นจากtraverse Data.Traversableฉันไม่สามารถมองเห็นจุดของมัน เนื่องจากฉันมาจากภูมิหลังที่จำเป็นใครก็ได้ช่วยอธิบายให้ฉันฟังในแง่ของการวนซ้ำที่จำเป็นได้ไหม รหัสหลอกจะได้รับการชื่นชมมาก ขอบคุณ.

5
monad ที่จัดทำดัชนีคืออะไร?
monad ที่จัดทำดัชนีคืออะไรและแรงจูงใจสำหรับ monad นี้? ฉันได้อ่านพบว่าช่วยในการติดตามผลข้างเคียง แต่ลายเซ็นและเอกสารของประเภทไม่ได้นำฉันไปไหน อะไรคือตัวอย่างของวิธีที่สามารถช่วยในการติดตามผลข้างเคียง (หรือตัวอย่างอื่น ๆ ที่ถูกต้อง)
98 haskell  monads 

6
ฟังก์ชันไร้สาระใน Data.Void มีประโยชน์สำหรับอะไร?
absurdฟังก์ชั่นในData.Voidมีลายเซ็นต่อไปนี้ซึ่งVoidเป็นชนิดที่ไม่มีใครอยู่มีเหตุผลส่งออกโดยแพคเกจที่: -- | Since 'Void' values logically don't exist, this witnesses the logical -- reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a ⊥ → aฉันจะรู้ตรรกะพอที่จะรับข้อสังเกตของเอกสารที่ตรงนี้โดยข้อเสนอตามที่ประเภทจดหมายสูตรที่ถูกต้อง สิ่งที่ฉันงงงวยและสงสัยคือ: ฟังก์ชันนี้มีประโยชน์ในการเขียนโปรแกรมประเภทใดบ้าง ฉันคิดว่ามันอาจจะมีประโยชน์ในบางกรณีเนื่องจากเป็นวิธีที่ปลอดภัยในการจัดการกับกรณีที่ "ไม่สามารถเกิดขึ้น" ได้อย่างละเอียดถี่ถ้วน แต่ฉันไม่รู้เพียงพอเกี่ยวกับการใช้ Curry-Howard ในทางปฏิบัติเพื่อบอกว่าแนวคิดนั้นอยู่บน ถูกต้องเลย แก้ไข: ตัวอย่างโดยเฉพาะอย่างยิ่งใน Haskell แต่ถ้าใครต้องการใช้ภาษาที่พิมพ์ขึ้นเองฉันจะไม่บ่น ...

3
จะเล่นกับ Control.Monad.Writer ใน Haskell ได้อย่างไร?
ฉันยังใหม่กับการเขียนโปรแกรมเชิงฟังก์ชันและเพิ่งเรียนรู้ที่Learn You a Haskellแต่เมื่อฉันอ่านบทนี้ฉันก็ติดอยู่กับโปรแกรมด้านล่าง: import Control.Monad.Writer logNumber :: Int -> Writer [String] Int logNumber x = Writer (x, ["Got number: " ++ show x]) multWithLog :: Writer [String] Int multWithLog = do a <- logNumber 3 b <- logNumber 5 return (a*b) ฉันบันทึกบรรทัดเหล่านี้ในไฟล์. hs แต่ไม่สามารถนำเข้าสู่ ghci ของฉันซึ่งบ่น: more1.hs:4:15: Not in …
97 haskell  monads 

1
Haskell ส่งออกโมดูลปัจจุบันพร้อมโมดูลที่นำเข้าเพิ่มเติม
เป็นไปได้ไหมที่จะเขียนโมดูลใน Haskell ซึ่งจะส่งออกโมดูลอีกครั้งนอกเหนือจากการส่งออกทุกสิ่งที่มองเห็นภายใน ให้พิจารณาโมดูลต่อไปนี้: module Test where import A f x = x ทุกอย่างนี้การส่งออกของโมดูลที่กำหนดไว้ภายในเพื่อการส่งออกแต่ไม่ได้การส่งออกนำเข้ามาจากอะไรfA ในทางกลับกันหากฉันต้องการส่งออกโมดูลอีกครั้งA: module Test ( module A, f ) where import A f x = x มีวิธีในการรีพอร์ตAและเอ็กซ์พอร์ตทุกสิ่งที่กำหนดไว้Testโดยไม่จำเป็นต้องเขียนทุกฟังก์ชันที่กำหนดไว้ภายในอย่างชัดเจนTestหรือไม่
96 haskell  module  export 

1
Paramorphisms คืออะไร?
เมื่ออ่านบทความคลาสสิกนี้ฉันติดอยู่กับพารามอร์ฟิสม์ น่าเสียดายที่ส่วนนี้ค่อนข้างบางและหน้า Wikipedia ไม่ได้พูดอะไรเลย การแปล Haskell ของฉันคือ: para :: (a -> [a] -> b -> b) -> b -> [a] -> b para f base = h where h [] = base h (x:xs) = f x xs (h xs) แต่ฉันไม่เอะใจนั่น - ฉันไม่มีสัญชาตญาณใด ๆ สำหรับลายเซ็นประเภทหรือผลลัพธ์ที่ต้องการ พารามอร์ฟิสซึมคืออะไรและมีตัวอย่างใดบ้างที่เป็นประโยชน์ในการดำเนินการ ใช่ฉันเคยเห็นคำถามเหล่านี้ แต่ไม่ครอบคลุมถึงพารามอร์ฟิสโดยตรงและชี้ไปที่แหล่งข้อมูลที่อาจเป็นประโยชน์ในการอ้างอิงเท่านั้น แต่ไม่ใช่เป็นสื่อการเรียนรู้

9
เอกสารออฟไลน์ของ Haskell?
อะไรคือความเป็นไปได้ในการรับเอกสารออฟไลน์สำหรับไลบรารีหลักของ Haskell (และอาจมากกว่านั้น) บางครั้งฉันเอาแล็ปท็อปไปที่ร้านกาแฟที่ไม่มี wifi และมันคงจะดีที่มีบางอย่างเช่นHoogleแต่สำหรับการใช้งานออฟไลน์

9
จุด 'const' ใน Haskell Prelude คืออะไร?
เมื่อมองผ่าน Haskell Prelude ฉันเห็นฟังก์ชัน const : const x _ = x ดูเหมือนจะไม่พบสิ่งที่เกี่ยวข้องกับฟังก์ชันนี้ ประเด็นคืออะไร? ใครช่วยยกตัวอย่างได้ไหมว่าฟังก์ชันนี้จะใช้งานได้ที่ไหน
95 haskell 

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