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

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

1
ค่า NaN ที่น้อยมากจะปรากฏในโครงข่ายประสาทเทียม
ฉันกำลังพยายามใช้สถาปัตยกรรมเครือข่ายประสาทเทียมใน Haskell และใช้กับ MNIST ฉันกำลังใช้hmatrixแพ็คเกจสำหรับพีชคณิตเชิงเส้น กรอบการฝึกอบรมของฉันสร้างขึ้นโดยใช้pipesแพ็คเกจ โค้ดของฉันคอมไพล์และไม่ผิดพลาด แต่ปัญหาคือการผสมขนาดเลเยอร์บางอย่าง (เช่น 1,000) ขนาดมินิแบทช์และอัตราการเรียนรู้ทำให้เกิดNaNค่าในการคำนวณ หลังจากการตรวจสอบบางครั้งฉันเห็นว่าในที่สุดค่าที่เล็กมาก (ลำดับของ1e-100) จะปรากฏในการเปิดใช้งาน แต่แม้ว่าจะไม่เกิดขึ้นการฝึกอบรมก็ยังไม่ได้ผล ไม่มีการปรับปรุงการสูญเสียหรือความแม่นยำ ฉันตรวจสอบและตรวจสอบรหัสของฉันอีกครั้งและฉันก็สูญเสียว่าต้นตอของปัญหาอาจเป็นอย่างไร นี่คือการฝึก backpropagation ซึ่งคำนวณเดลต้าสำหรับแต่ละเลเยอร์: backward lf n (out,tar) das = do let δout = tr (derivate lf (tar, out)) -- dE/dy deltas = scanr (\(l, a') δ -> let w = weights l in …

2
เทคนิคการติดตามข้อ จำกัด
นี่คือสถานการณ์: ผมเคยเขียนโค้ดบางประเภทที่มีลายเซ็นและ GHC บ่นไม่สามารถอนุมาน x ~ Y สำหรับบางคนและx yโดยทั่วไปคุณสามารถขว้าง GHC กระดูกและเพิ่ม isomorphism ให้กับข้อ จำกัด ของฟังก์ชันได้ แต่นี่เป็นความคิดที่ไม่ดีด้วยเหตุผลหลายประการ: ไม่เน้นการเข้าใจรหัส คุณสามารถจบลงด้วยข้อ จำกัด 5 ข้อที่ใครจะพอเพียง (ตัวอย่างเช่นหากข้อ 5 ถูกระบุโดยข้อ จำกัด เฉพาะอีกข้อหนึ่ง) คุณสามารถจบลงด้วยข้อ จำกัด ปลอมหากคุณทำอะไรผิดพลาดหรือหาก GHC ไม่ช่วยเหลือ ฉันใช้เวลาหลายชั่วโมงในการต่อสู้คดี 3. ฉันเล่นด้วยsyntactic-2.0และผมพยายามที่จะกำหนดรุ่นโดเมนที่เป็นอิสระของคล้ายกับรุ่นที่กำหนดไว้ในshareNanoFeldspar.hs ฉันมีสิ่งนี้: {-# LANGUAGE GADTs, FlexibleContexts, TypeOperators #-} import Data.Syntactic -- Based on NanoFeldspar.hs data Let a …
322 haskell  constraints  ghc 

8
คำหลัก "forall" ใน Haskell / GHC ทำอะไรได้บ้าง
ฉันเริ่มเข้าใจวิธีการใช้forallคำหลักใน "ประเภทที่มีอยู่" เช่นนี้: data ShowBox = forall s. Show s => SB s อย่างไรก็ตามนี่เป็นเพียงส่วนย่อยของวิธีการforallใช้งานและฉันก็ไม่สามารถห่อหุ้มใจการใช้งานในสิ่งต่าง ๆ เช่นนี้: runST :: forall a. (forall s. ST s a) -> a หรืออธิบายว่าทำไมสิ่งเหล่านี้จึงแตกต่าง: foo :: (forall a. a -> a) -> (Char, Bool) bar :: forall a. ((a -> a) -> (Char, Bool)) หรือทั้งหมดRankNTypes... ฉันมักจะชอบภาษาอังกฤษที่ชัดเจนและไร้คำศัพท์มากกว่าภาษาที่เป็นเรื่องปกติในสภาพแวดล้อมทางวิชาการ …
312 haskell  syntax  types  ghc  forall 

6
รูปแบบปกติที่อ่อนแอคืออะไร
สิ่งที่ไม่อ่อนแอหัวหน้าฟอร์มปกติ (WHNF) หมายถึง? อะไรรูปแบบหัวปกติ (HNF) และปกติแบบฟอร์ม (NF) หมายถึง? รัฐในโลกแห่งความจริง Haskell : ฟังก์ชัน seq ที่คุ้นเคยประเมินค่านิพจน์กับสิ่งที่เราเรียกว่าเฮดฟอร์มปกติ (ตัวย่อ HNF) มันจะหยุดเมื่อถึงตัวสร้างชั้นนอกสุด ("หัว") สิ่งนี้แตกต่างจากฟอร์มปกติ (NF) ซึ่งนิพจน์ได้รับการประเมินอย่างสมบูรณ์ นอกจากนี้คุณยังจะได้ยินโปรแกรมเมอร์ Haskell อ้างถึงรูปแบบปกติของหัวอ่อน (WHNF) สำหรับข้อมูลปกติรูปแบบปกติของหัวที่อ่อนแอจะเหมือนกับรูปแบบปกติของหัว ความแตกต่างเกิดขึ้นสำหรับฟังก์ชั่นเท่านั้นและลึกซึ้งเกินกว่าที่จะเกี่ยวข้องกับเราที่นี่ ฉันได้อ่านทรัพยากรและคำจำกัดความ ( Haskell WikiและHaskell Mail ListและFree Dictionary ) แล้ว แต่ฉันไม่เข้าใจ บางคนสามารถยกตัวอย่างหรือให้คำจำกัดความของคนธรรมดาได้หรือไม่? ฉันเดาว่ามันจะคล้ายกับ: WHNF = thunk : thunk HNF = 0 : thunk NF …

7
การใช้พีชคณิตประเภทข้อมูลเชิงพีชคณิตในทางที่ผิด - ทำไมจึงใช้งานได้?
นิพจน์ 'พีชคณิต' สำหรับชนิดข้อมูลเชิงพีชคณิตนั้นมีความหมายมากสำหรับคนที่มีพื้นฐานด้านคณิตศาสตร์ ให้ฉันพยายามอธิบายสิ่งที่ฉันหมายถึง มีการกำหนดประเภทพื้นฐาน สินค้า • สหภาพ + ซิงเกิล X หน่วย 1 และการใช้ชวเลขX²สำหรับX•Xและ2XสำหรับX+Xฯลฯ เราก็สามารถกำหนดนิพจน์พีชคณิตสำหรับเช่นรายการเชื่อมโยง data List a = Nil | Cons a (List a) ↔ L = 1 + X • L และต้นไม้ไบนารี: data Tree a = Nil | Branch a (Tree a) (Tree a) ↔ T = 1 …

1
ความสามารถในการผลักและดึง FRP แบบพื้นฐานแตกต่างกันอย่างไร
ฉันต้องการเรียน FRP ใน Haskell แต่มันค่อนข้างยากที่จะตัดสินใจใช้ห้องสมุด หลายคนดูเหมือนจะพยายามตายบางคนดูเหมือนจะฟื้นคืนชีพ (เช่นกิจกรรมล่าสุดในแยมปา) จากสิ่งที่ฉันอ่านดูเหมือนว่ามี "ชนิด" ของ FRP อยู่สองแบบ: push-pull FRP (เช่น Reactive-Banana) ที่ด้านหนึ่งและ FRP arrowized (เหมือนใน Yampa) ที่อยู่อีกด้านหนึ่ง ดูเหมือนว่ามันเคยเป็น "FRP แบบคลาสสิค" ในเวลาของ Fran และ FrTime แต่ฉันไม่ได้เห็นกิจกรรมล่าสุดในสิ่งเหล่านี้ สองหรือสามวิธีนี้ต่างกันจริงๆของ FRP หรือไม่ หนึ่งในนั้นคือทฤษฎีที่ล้าสมัยในขณะที่อีกอันจะเป็น "สิ่งของแห่งอนาคต"? หรือพวกเขาจะต้องพัฒนาไปพร้อม ๆ กันเพื่อบอกจุดประสงค์ที่แตกต่างกัน? ฉันตั้งชื่อห้องสมุดที่โดดเด่นที่สุดของแต่ละหมวดหมู่หรือมีตัวเลือกอื่น ๆ ให้พิจารณา (Sodium, Netwire, et al) หรือไม่ ในที่สุดฉันก็ดูคำปราศรัยจาก Evan Czaplickiแนะนำในความคิดเห็นโดยเจ Abrahamson …

3
เครื่องหมายอัศเจรีย์หมายถึงอะไรในการประกาศของ Haskell
ฉันเจอคำจำกัดความต่อไปนี้เมื่อฉันพยายามเรียนรู้ Haskell โดยใช้โครงการจริงเพื่อผลักดันมัน ฉันไม่เข้าใจว่าเครื่องหมายอัศเจรีย์หน้าแต่ละอาร์กิวเมนต์หมายถึงอะไรและหนังสือของฉันไม่ได้พูดถึงมัน data MidiMessage = MidiMessage !Int !MidiMessage

1
การใช้คำพ้องความหมายประเภทที่เกี่ยวข้องกับแม่แบบ Haskell
Template Haskell สามารถค้นหาชื่อและ / หรือการประกาศคำพ้องความหมายประเภทที่เกี่ยวข้องที่ประกาศไว้ในคลาสประเภทได้หรือไม่ ฉันคาดว่าreifyจะทำสิ่งที่ฉันต้องการ แต่ดูเหมือนจะไม่ได้ให้ข้อมูลที่จำเป็นทั้งหมด มันทำงานเพื่อรับลายเซ็นประเภทฟังก์ชั่น: % ghci GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help ... Prelude> -- I'll be inserting line breaks and whitespace for clarity Prelude> -- in all GHCi output. Prelude> :set -XTemplateHaskell Prelude> import Language.Haskell.TH Prelude Language.Haskell.TH> class C a where f :: a …

6
เทมเพลตแฮสเค็ลมีอะไรเลวร้าย
ดูเหมือนว่าแม่แบบ Haskell มักถูกมองโดยชุมชน Haskell ว่าเป็นความสะดวกสบายที่โชคร้าย เป็นการยากที่จะพูดออกมาอย่างชัดเจนถึงสิ่งที่ฉันสังเกตเห็นในเรื่องนี้ แต่พิจารณาตัวอย่างเล็ก ๆ น้อย ๆ เหล่านี้ เทมเพลต Haskell แสดงรายการภายใต้ "The Ugly (แต่จำเป็น)" เพื่อตอบคำถามที่ผู้ใช้ควรใช้ / หลีกเลี่ยง Haskell (GHC) ส่วนขยายใด เทมเพลต Haskell ถือว่าเป็นวิธีการแก้ปัญหาชั่วคราว / ที่ด้อยกว่าในUnboxed Vectors ของ newtype'd values thread (รายการส่งเมลของไลบรารี) Yesod มักถูกวิพากษ์วิจารณ์ว่าต้องอาศัยเทมเพลต Haskell มากเกินไป (ดูโพสต์บล็อกเพื่อตอบสนองต่อความรู้สึกนี้) ฉันได้เห็นโพสต์บล็อกต่าง ๆ ที่ผู้คนทำสิ่งต่าง ๆ เรียบร้อยด้วยเทมเพลตแฮสเค็ลล์ทำให้เปิดใช้งานไวยากรณ์ที่สวยกว่าซึ่งไม่สามารถทำได้ในแฮสเค็ลล์ปกติ ดังนั้นทำไมเทมเพลตแฮสเคลล์จึงถูกมองลงไปด้วยวิธีนี้? อะไรทำให้ไม่พึงปรารถนา เทมเพลต Haskell ควรหลีกเลี่ยงสถานการณ์ใดและเพราะอะไร

4
ทำไม Haskell (GHC) ถึงเร็วขนาดนี้
Haskell (พร้อมGHCคอมไพเลอร์) นั้นเร็วกว่าที่คุณคาดไว้มาก ใช้อย่างถูกต้องสามารถใช้ภาษาใกล้เคียงกับภาษาระดับต่ำได้ (สิ่งที่ชื่นชอบสำหรับ Haskellers ที่ต้องทำคือพยายามและรับภายใน 5% ของ C (หรือแม้กระทั่งเอาชนะ แต่นั่นหมายความว่าคุณกำลังใช้โปรแกรม C ที่ไม่มีประสิทธิภาพเนื่องจาก GHC รวบรวม Haskell ถึง C) คำถามของฉันคือทำไม? Haskell เป็นการประกาศและขึ้นอยู่กับแคลคูลัสแลมบ์ดา สถาปัตยกรรมเครื่องจักรมีความจำเป็นอย่างชัดเจนโดยขึ้นอยู่กับเครื่องจักรทัวริง ที่จริง Haskell ไม่มีคำสั่งประเมินที่เฉพาะเจาะจง นอกจากนี้แทนที่จะจัดการกับชนิดข้อมูลเครื่องคุณทำประเภทข้อมูลพีชคณิตตลอดเวลา ที่แปลกประหลาดที่สุดคือฟังก์ชั่นการสั่งซื้อที่สูงขึ้น คุณอาจคิดว่าการสร้างฟังก์ชั่นได้ทันทีและการขว้างมันไปรอบ ๆ จะทำให้โปรแกรมช้าลง แต่การใช้ฟังก์ชันคำสั่งซื้อที่สูงกว่าทำให้ Haskell เร็วขึ้น ดูเหมือนว่าในการเพิ่มประสิทธิภาพรหัส Haskell คุณจะต้องทำให้มันดูสง่างามและเป็นนามธรรมมากกว่าการใช้เครื่องจักร ไม่มีคุณสมบัติขั้นสูงใด ๆ ของ Haskell ที่ดูเหมือนจะส่งผลกระทบต่อประสิทธิภาพการทำงานของมันหากไม่ได้ปรับปรุง ขออภัยถ้านี่คือเสียงที่ฟังดู แต่นี่คือคำถามของฉัน: ทำไม Haskell (เรียบเรียงกับ GHC) เร็วขนาดนี้โดยพิจารณาจากธรรมชาติที่เป็นนามธรรมและความแตกต่างจากเครื่องจักรทางกายภาพ? หมายเหตุ: …

4
การเปรียบเทียบกรอบเว็บ Snap และ Yesod ของ Haskell
กรอบงานเว็บ Haskell ทั้งสองในข่าวล่าสุดคือYesod (ที่ 0.8) และSnap (ที่ 0.4) เห็นได้ชัดว่า Yesod ปัจจุบันรองรับคุณสมบัติมากมายกว่า Snap อย่างไรก็ตามฉันไม่สามารถใช้ไวยากรณ์ Yesod ที่ใช้กับ HTML, CSS และ Javascript ได้ ดังนั้นฉันต้องการที่จะเข้าใจสิ่งที่ฉันจะหายไปถ้าฉันไปกับ Snap แทน ตัวอย่างเช่นดูเหมือนว่าจะไม่มีการสนับสนุนฐานข้อมูล วิธีการเกี่ยวกับการประชุม? คุณสมบัติอื่น ๆ ?

1
Haskell: รายการ, อาร์เรย์, เวกเตอร์, ลำดับ
ฉันกำลังเรียนรู้ Haskell และอ่านบทความสองสามข้อเกี่ยวกับประสิทธิภาพที่แตกต่างของรายการ Haskell และ (แทรกภาษาของคุณ) การเป็นผู้เรียนฉันเห็นได้ชัดว่าใช้รายการโดยไม่คิดถึงความแตกต่างด้านประสิทธิภาพ ฉันเพิ่งเริ่มตรวจสอบและพบห้องสมุดโครงสร้างข้อมูลจำนวนมากที่มีอยู่ใน Haskell ใครช่วยอธิบายความแตกต่างระหว่างรายการ, อาร์เรย์, เวกเตอร์, ลำดับโดยไม่ต้องลึกมากในทฤษฎีวิทยาศาสตร์คอมพิวเตอร์ของโครงสร้างข้อมูล? นอกจากนี้ยังมีรูปแบบทั่วไปบางอย่างที่คุณจะใช้โครงสร้างข้อมูลเดียวแทนที่จะเป็นโครงสร้างอื่นหรือไม่? มีโครงสร้างข้อมูลอื่น ๆ ที่ฉันขาดหายไปและอาจมีประโยชน์หรือไม่
230 haskell 

7
Haskell ตอบสนองต่อ Node.js คืออะไร?
ฉันเชื่อว่าชุมชน Erlang ไม่ได้มีความริษยาของ Node.js เนื่องจากเป็นแบบไม่บล็อก I / O และมีวิธีการปรับใช้งานได้อย่างง่ายดายไปยังตัวประมวลผลมากกว่าหนึ่งตัว รายละเอียดเพิ่มเติมได้ที่http://journal.dedasys.com/2010/04/29/erlang-vs-node-jsและNode.js หรือ Erlang แล้ว Haskell ล่ะ Haskell สามารถให้ประโยชน์บางอย่างของ Node.js ได้หรือไม่นั่นคือโซลูชันที่สะอาดเพื่อหลีกเลี่ยงการบล็อก I / O โดยไม่ต้องขอความช่วยเหลือจากการเขียนโปรแกรมแบบหลายเธรด? มีหลายสิ่งที่น่าสนใจสำหรับ Node.js เหตุการณ์: ไม่มีการจัดการเธรดโปรแกรมเมอร์ให้การเรียกกลับเท่านั้น (ในกรอบงาน Snap) รับประกันการโทรกลับเพื่อให้ทำงานในหัวข้อเดียว: ไม่มีสภาพการแข่งขัน API ที่ใช้งานง่ายและเป็นมิตรกับ UNIX โบนัส: รองรับ HTTP ที่ยอดเยี่ยม นอกจากนี้ยังมี DNS I / O ทุกตัวเป็นค่าเริ่มต้นแบบอะซิงโครนัส ทำให้ง่ายขึ้นในการหลีกเลี่ยงการล็อค อย่างไรก็ตามการประมวลผล CPU มากเกินไปในการติดต่อกลับจะส่งผลต่อการเชื่อมต่ออื่น ๆ (ในกรณีนี้งานควรแบ่งออกเป็นงานย่อยที่มีขนาดเล็กลงและกำหนดเวลาใหม่) …

6
การเรียกใช้โปรแกรม Haskell บน Android OS
Forenote: นี่เป็นส่วนเสริมของเธรดที่เริ่มต้นใน/ r / haskell เริ่มต้นด้วยข้อเท็จจริง: Android เป็นระบบปฏิบัติการที่ยอดเยี่ยม Haskell เป็นภาษาโปรแกรมที่ดีที่สุดในโลก ดังนั้นการรวมกันอย่างชัดเจนจะทำให้การพัฒนา Android ดีขึ้นมาก โดยพื้นฐานแล้วฉันต้องการทราบว่าฉันสามารถเขียนโปรแกรม Haskell สำหรับ Android OS ได้อย่างไร คำถามของฉันคือ: ฉันจะรับโปรแกรม Haskell เพื่อเรียกใช้ / เรียกใช้บน Android OS ได้อย่างไร

2
เมื่อ -XAllowAmbiguousTypes เหมาะสมเมื่อใด
ผมเคยโพสต์เมื่อเร็ว ๆ นี้คำถามเกี่ยวกับประโยค-2.0shareเกี่ยวกับความหมายของ ฉันเคยทำงานในGHC 7.6 : {-# LANGUAGE GADTs, TypeOperators, FlexibleContexts #-} import Data.Syntactic import Data.Syntactic.Sugar.BindingT data Let a where Let :: Let (a :-> (a -> b) :-> Full b) share :: (Let :<: sup, sup ~ Domain b, sup ~ Domain a, Syntactic a, Syntactic b, Syntactic (a …
212 haskell  ghc 

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