小编mic*_*hid的帖子

带有Scala中可选字段的Case Classes

例如,我有这个案例类:

case class Student (firstName : String, lastName : String)
Run Code Online (Sandbox Code Playgroud)

如果我使用这个case类,那么向case类中的字段提供数据是否可选?例如,我会这样做:

val student = new Student(firstName = "Foo")
Run Code Online (Sandbox Code Playgroud)

谢谢!

scala

25
推荐指数
3
解决办法
3万
查看次数

堆栈新命令无法下载 lts-14.1 的构建计划

堆栈失败并显示 404 HTTP 状态,无法下载 lts-14.1 的构建计划:

$ stack new my-project

[...]

Downloading lts-14.1 build plan ...
RedownloadInvalidResponse Request {
  host                 = "raw.githubusercontent.com"
  port                 = 443
  secure               = True
  requestHeaders       = []
  path                 = "/fpco/lts-haskell/master//lts-14.1.yaml"
  queryString          = ""
  method               = "GET"
  proxy                = Nothing
  rawBody              = False
  redirectCount        = 10
  responseTimeout      = ResponseTimeoutDefault
  requestVersion       = HTTP/1.1
}
 "/home/michid/.stack/build-plan/lts-14.1.yaml" (Response {responseStatus = Status {statusCode = 404, statusMessage = "Not Found"}, responseVersion = HTTP/1.1, responseHeaders = [("Content-Security-Policy","default-src 'none'; style-src 'unsafe-inline'; sandbox"),("Strict-Transport-Security","max-age=31536000"),("X-Content-Type-Options","nosniff"),("X-Frame-Options","deny"),("X-XSS-Protection","1; mode=block"),("X-GitHub-Request-Id","10DA:4457:1D507:285B9:5D55DA2D"),("Content-Length","15"),("Accept-Ranges","bytes"),("Date","Thu, 15 …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-stack

23
推荐指数
1
解决办法
4298
查看次数

是否有"高级Scala"主题的中心站点/页面?

尽管多次阅读"Scala编程",我仍然经常发现书中未解释的重要Scala结构,如

@uncheckedVariance
@specialized
Run Code Online (Sandbox Code Playgroud)

和其他奇怪的结构一样

new { ... }  // No class name!
Run Code Online (Sandbox Code Playgroud)

等等.

考虑到这本书是由斯卡拉"发明家"本人和其他人写的,我觉得这很令人沮丧.

我试图阅读语言规范,但它是为学者而不是练习程序员.它让我头晕目眩.

在Scala中有"Everything"编程的网站"没有告诉你"吗?

还有是日常斯卡拉博客,但它在一年前去世了.

scala

16
推荐指数
3
解决办法
3934
查看次数

“ monad是计算模型”是什么意思

人们说“ monad是计算模型”的确切含义是什么?从完整性的意义上讲,这意味着计算吗?如果是这样,怎么办?

澄清:这个问题不是要解释单子,而是人们在此上下文中对“计算模型”的含义以及它与单子的关系。有关此短语的典型用法,请参阅此答案的结尾。

在我对图灵机的理解中,递归函数理论,lambda微积分等都是计算模型,我完全看不出monad与它之间的关系。

monads haskell category-theory

16
推荐指数
2
解决办法
365
查看次数

如何在Java中实现函子的不动点

我最近发现了如何 以某种迂回的方式在 Java 中模拟高阶类型,如下所示

interface H<F, T> { }
Run Code Online (Sandbox Code Playgroud)

这里H编码一个高阶类型,它采用类型参数,F该类型参数本身采用参数T

现在这让我想知道,我们可以用它来实现一些更高级的构造吗?例如,Haskell 中的 Fix 等函子的不动点及其相应的变形

java functor higher-kinded-types catamorphism fixed-point-iteration

12
推荐指数
1
解决办法
277
查看次数

Haskell中的附加用例

在过去的几天中,我一直在阅读有关附加功能的信息。当我从理论的角度开始理解它们的重要性时,我想知道人们如何以及为什么人们在Haskell中使用它们。Data.Functor.Adjunction提供一个实现,其实例中包括 免费仿函数/健忘仿函数和咖喱/咖喱。从理论上讲,这些再次很有趣,但是我看不到如何将它们用于更实际的编程问题。

有没有解决人们使用的编程问题的示例,Data.Functor.Adjunction以及为什么您比其他人更喜欢这种实现?

haskell functor category-theory

11
推荐指数
1
解决办法
636
查看次数

每种类型都有独特的变形吗?

最近我终于开始觉得我理解了catamorphisms.我在最近的一个回答中写了一些关于它们的内容,但简单地说,对于递归遍历该类型的值的过程,我会说类型抽象的一个变形,其中该类型的模式匹配在每个类型具有的构造函数中被赋予一个函数. .虽然我欢迎对这一点或上面链接的答案中的较长版本进行任何更正,但我认为我或多或少都有这种情况,这不是这个问题的主题,只是一些背景知识.

一旦我意识到你传递给一个catamorphism的函数完全对应于类型的构造函数,并且这些函数的参数同样对应于那些构造函数的字段的类型,所有这些都突然感觉很机械,我看不到有哪些替代实施的任何摆动空间.

例如,我只是编造了这种愚蠢的类型,没有关于它的结构"意味着什么"的真实概念,并为它导出了一个变形.我没有看到任何其他方式我可以定义这种类型的通用折叠:

data X a b f = A Int b
             | B
             | C (f a) (X a b f)
             | D a

xCata :: (Int -> b -> r)
      -> r
      -> (f a -> r -> r)
      -> (a -> r)
      -> X a b f
      -> r
xCata a b c d v = case v of
  A i x -> a i x
  B -> b
  C f x …
Run Code Online (Sandbox Code Playgroud)

haskell category-theory catamorphism

10
推荐指数
1
解决办法
215
查看次数

在谈论不动点时,“最小”和“最大”指的是什么顺序?

在 Haskell 中关于不动点的文本中,经常提到最小和最大不动点。例如在Data.Functor.Fixedpoint文档或这里

最少和最多暗示所涉及类型的顺序(或者仅在固定点上定义它就足够了?)无论如何,我从未见过这个顺序被明确表示。

在 Haskell 中,一个不动点大于另一个不动点的正式含义是什么?

haskell fixpoint-combinators

9
推荐指数
1
解决办法
188
查看次数

"价值阶级空间是平的"是什么意思?

我现在正在阅读"Scala编程"一书.在第11章中,它提到:

请注意,值类空间是平的.

但没有人解释它的含义.那很重要么?为什么?如何使用以及如何检查价值类空间是非常平坦的.看来,它应该告诉ref类空间不平坦,但不是,没有其他的话再说一遍.所以我想知道"空间是平的"是什么意思,以及为什么价值类空间是平的.

scala class-hierarchy

8
推荐指数
1
解决办法
186
查看次数

从Class [T]映射到T而不进行强制转换

我想从类标记映射到以下代码行的实例:

trait Instances {
  def put[T](key: Class[T], value: T)
  def get[T](key: Class[T]): T
}
Run Code Online (Sandbox Code Playgroud)

这可以在不必解析get方法中的强制转换的情况下完成吗?

更新:

对于更普遍的情况,如何用一些Foo[T]而不是Class[T]

scala

7
推荐指数
3
解决办法
573
查看次数