首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在斯卡拉兹找到我的路

在斯卡拉兹找到我的路
EN

Stack Overflow用户
提问于 2012-09-12 12:04:17
回答 4查看 2.2K关注 0票数 24

可能重复: 好黄曲柳游戏攻略

我想了解更多关于Scalaz的知识,可能会使用Scalaz7来避免我的大脑在声明稳定后重新布线。我的问题是Scalaz包含了很多功能。虽然它大部分都是独立于其他部分的,但我希望对Scalaz提供的全球功能以及它的组织方式有一个鸟瞰。据我所知,斯卡拉兹提出,

  • FunctorApplicativeMonad性状
  • 新的单簧管,如Validation (编辑:原来它只是一个应用程序)
  • monad变压器(OptionTEitherT.)
  • Itereatee%s
  • Lenses
  • Zipper%s

此外,还有许多隐式转换,以及与标准库重叠但在类型方面表现更好的新构造函数(如some )。

代码语言:javascript
复制
:type Some(3) // Some[Int]
:type some(3) // Option[Int]

我基本掌握了这些结构中的大部分,但我对其中的任何概念都不熟悉。

您有什么建议来学习这个库,模块之间存在什么样的逻辑依赖?更广泛地说,在哪里可以找到库的高级概述?

编辑似乎大多数答案都是为了学习函数式编程的基本组件,比如monads,所以我将尝试更精确。我有Haskell的基本知识和数学家背景,所以我的问题与范畴理论或基本函数式编程无关。

我的问题是,Scalaz是一个巨大的库。我不知道在不同的数据类型上可以找到什么、哪些方法是可用的或有用的。我真正需要的是一张地图,例如,它会告诉我,当我想要迭代处理需要处理的资源时,我可能想考虑迭代,以及我可以用它做什么样的操作。更像是库中可用功能的全景图。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-12 13:12:04

我推荐尤金·横田在斯卡拉斯7上的优秀系列学习黄曲柳。作者采用了给你一个好的哈斯克尔的结构。这种方法是系统的,而且非常具有教育性。

票数 11
EN

Stack Overflow用户

发布于 2012-09-12 13:18:54

我的建议是,而不是,等到你觉得自己对库有了高层次的理解--只是先选择几个工具,然后在你走的时候遵循概念链接。

Validation (顺便说一下,并不是真正的单曲)可能是最好的起点。如果您曾经在标准库中使用过Either进行验证,那么Validation会感到既熟悉又方便。您将发现关于Validation ( 这里在……上面StackOverflow其他地方 )的许多有用的讨论。

一旦您习惯于使用Validation,您应该对应用程序函数式类有很好的基本理解,这在许多其他情况下都是有用的。

Monoid是另一个很好的起点。它是一个非常简单的类型类(本质上只是一个相联的加法类操作和一个标识元素),一旦你理解了它,你就会看到到处都是单列。例如,请参见这个答案 (完全公开:这是我做的),展示如何使用monoidy来解决最初看起来不太单一的问题。

Scalaz中还有许多其他方便的小工具,您无需掌握整个全局就可以使用这些工具。Bifunctor是我的最爱之一--它为您提供了一种将函数映射到任意一方的方法,从而使使用元组更加方便:

代码语言:javascript
复制
scala> import scalaz._, Scalaz._
import scalaz._
import Scalaz._

scala> def inc(i: Int) = i + 1
inc: (i: Int)Int

scala> def repeat(n: Int)(s: String) = s * n
repeat: (n: Int)(s: String)String

scala> (inc(_)) <-: (1, "a") :-> repeat(3)
res0: (Int, String) = (2,aaa)

一旦你对这些概念有了很好的理解,我建议布伦特约尔盖的[医]百叶草,它是面向Haskell的,但是给你提供了足够多的范畴理论和抽象代数来理解你在Scalaz中找到的大部分东西。

票数 9
EN

Stack Overflow用户

发布于 2012-09-12 13:14:01

我发现的一些视频很有用:

  • 尼克·帕特里奇概述詹森·宗格
  • 实用斯卡拉兹,克里斯马歇尔
  • 爱德华·克米特的镜片 (5部分)
  • 汤尼·莫里斯( Tony Morris )的“读者”( Reader monad )鲁纳尔·比纳
  • 迈克尔·皮尔奎斯特( Michael Pilquist )的“国家单曲”
  • 约旦西部的Monad变压器

其中大多数都有很棒的幻灯片,如果你是硬核的话,那就在没有视频的情况下阅读它们。

还可以从学学读Haskell类型签名并浏览Haskell打字机

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12387800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档