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

1
Scalaz iteratees: "Lifting" `EnumeratorT` เพื่อให้ตรงกับ IterateeT สำหรับ monad ที่ใหญ่กว่า
หากฉันมีEnumeratorTและที่เกี่ยวข้องIterateeTฉันสามารถเรียกใช้พวกเขาด้วยกัน: val en: EnumeratorT[String, Task] = EnumeratorT.enumList(List("a", "b", "c")) val it: IterateeT[String, Task, Int] = IterateeT.length (it &= en).run : Task[Int] หากตัวแจงนับเป็น "ใหญ่กว่า" iteratee monad ฉันสามารถใช้upหรือโดยทั่วไปHoistเพื่อ "ยก" iteratee เพื่อให้ตรงกับ: val en: EnumeratorT[String, Task] = ... val it: IterateeT[String, Id, Int] = ... val liftedIt = IterateeT.IterateeTMonadTrans[String].hoist( implicitly[Task |>=| Id]).apply(it) (liftedIt …

8
แนะนำ scalaz ที่ดี [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ scalaz เมื่อเร็ว ๆ นี้สบตาฉัน มันดูน่าสนใจมาก แต่ฉันไม่พบคำแนะนำที่ดีเกี่ยวกับห้องสมุด ดูเหมือนว่า scalaz จะรวมความคิดมากมายจาก Haskell และคณิตศาสตร์ บทความส่วนใหญ่ที่ฉันพบถือว่าคุณรู้สึกคุ้นเคยกับแนวคิดเหล่านี้แล้ว สิ่งที่ฉันกำลังมองหาคือการแนะนำไลบรารีและแนวคิดพื้นฐานอย่างค่อยเป็นค่อยไปตั้งแต่แนวคิดที่เรียบง่ายและพื้นฐานไปจนถึงขั้นสูงกว่า (ซึ่งเป็นพื้นฐานในพื้นฐาน) ฉันดูตัวอย่างแต่ก็ยากสำหรับฉันที่จะหาจุดที่ฉันควรเริ่มเรียนรู้ห้องสมุด ใครช่วยแนะนำ scalaz หรือบทแนะนำที่ดี (ซึ่งครอบคลุมพื้นฐานและแนวคิดขั้นสูง) ได้ไหม หรือให้ฉันเป็นจุดเริ่มต้นในคำตอบ ปรับปรุง ขอบคุณทุกคนสำหรับคำตอบที่ยอดเยี่ยม! ฉันสรุปคำตอบทั้งหมดและเพิ่มลิงก์เพิ่มเติมในบล็อกของฉัน: https://github.com/OlegIlyenko/hacking-scala-blog/blob/master/posts/Scalaz-Resources-For-Beginners.md และสำหรับผู้ที่พยายามหาเอกสาร API สำหรับ Scalaz พวกเขาอยู่ที่นี่: http://docs.typelevel.org/api/scalaz/nightly/index.html#package
215 scala  scalaz 

1
หลีกเลี่ยงการรั่วไหลของหน่วยความจำด้วย Scalaz 7 zipWithIndex / group enumeratees
พื้นหลัง ตามที่ระบุไว้ในคำถามนี้ฉันใช้ Scalaz 7 วนซ้ำเพื่อประมวลผลสตรีมข้อมูลขนาดใหญ่ (กล่าวคือไม่มีขอบเขต) ในพื้นที่ฮีปคงที่ รหัสของฉันมีลักษณะดังนี้: type ErrorOrT[M[+_], A] = EitherT[M, Throwable, A] type ErrorOr[A] = ErrorOrT[IO, A] def processChunk(c: Chunk, idx: Long): Result def process(data: EnumeratorT[Chunk, ErrorOr]): IterateeT[Vector[(Chunk, Long)], ErrorOr, Vector[Result]] = Iteratee.fold[Vector[(Chunk, Long)], ErrorOr, Vector[Result]](Nil) { (rs, vs) => rs ++ vs map { case (c, …
106 scala  scalaz  iterate 

3
Reader Monad สำหรับ Dependency Injection: การอ้างอิงหลายครั้งการเรียกซ้อนกัน
เมื่อถูกถามเกี่ยวกับ Dependency Injection ใน Scala คำตอบจำนวนมากชี้ไปที่การใช้ Reader Monad ไม่ว่าจะเป็นคำตอบจาก Scalaz หรือเพียงแค่หมุนของคุณเอง มีจำนวนของบทความที่ชัดเจนมากอธิบายพื้นฐานของวิธีการ (เช่นมีการพูดคุย Runar ของ , บล็อกของเจสัน ) แต่ผมไม่ได้จัดการเพื่อหาตัวอย่างที่สมบูรณ์มากขึ้นและผมไม่เห็นข้อดีของวิธีการที่มากกว่าเช่นขึ้น DI "manual" แบบดั้งเดิม (ดูคำแนะนำที่ฉันเขียน ) ส่วนใหญ่ฉันอาจพลาดประเด็นสำคัญบางอย่างดังนั้นคำถามนี้ ตัวอย่างเช่นสมมติว่าเรามีคลาสเหล่านี้: trait Datastore { def runQuery(query: String): List[String] } trait EmailServer { def sendEmail(to: String, content: String): Unit } class FindUsers(datastore: Datastore) { def inactive(): …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.