直觉上,我希望"数学"答案all (==1) [1,1..]是True因为列表中只包含1的所有元素都等于1.但我理解"计算上",评估无限列表以检查事实上,每个元素实际上等于1将永远不会终止,因此表达式将"评估"到底部或?.
我发现这个结果反直觉而且有点令人不安.我认为列表无限的这个事实在数学上和计算上都会混淆这个问题,我很乐意听到在这个领域有一些见解和经验的人
我的问题是,哪个是数学上最正确的答案??还是True?关于为什么一个答案比另一个答案更正确的一些详细说明也将受到高度赞赏.
编辑:这可能间接地与库里 - 霍华德同构(程序是证明和类型是定理)和哥德尔的不完备性定理有关.如果我没记错的话,其中一个不完备性定理可以(非常粗略地)总结为"足够强大的形式系统(如数学或编程语言)无法证明所有可以在系统中表达的真实陈述"
math computer-science haskell data-structures infinite-recursion
首先,这是我的实体。
玩家:
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.UUIDGenerator.class,
property="id")
public class Player {
// other fields
@ManyToOne
@JoinColumn(name = "pla_fk_n_teamId")
private Team team;
// methods
}
Run Code Online (Sandbox Code Playgroud)
团队:
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.UUIDGenerator.class,
property="id")
public class Team {
// other fields
@OneToMany(mappedBy = "team")
private List<Player> members;
// methods
}
Run Code Online (Sandbox Code Playgroud)
正如已经提到的许多主题一样,使用Jackson可以通过多种方式避免WebService中的StackOverflowExeption。
太酷了,除了JPA之外,所有其他人仍然在序列化之前构造具有无限递归到另一个实体的实体。这只是丑陋的回答,要求花费更长的时间。检查此屏幕截图:IntelliJ调试器
有办法解决吗?知道我要根据端点获得不同的结果。例子 :
谢谢! …
我是 Haskell 的新手,我有以下代码:
second (x:y:xs) = y : second xs -- returns every second element of a list
second _ = []
xs = [1,2,3,4] ++ second xs
Run Code Online (Sandbox Code Playgroud)
我期望xs被评估为[1,2,3,4,2,4,4],因为这是固定点,即[1,2,3,4,2,4,4] == [1,2,3,4] ++ second [1,2,3,4,2,4,4]。
然而,当我尝试xs在 GHCi 中进行评估时,我得到了
Prelude> xs
[1,2,3,4,2,4,4
Run Code Online (Sandbox Code Playgroud)
但它不会停止计算。
谁能解释为什么这不会停止,有没有一种简单的方法可以使计算停止并返回[1,2,3,4,2,4,4]?
haskell infinite-loop lazy-evaluation infinite-recursion fixpoint-combinators