问题标签 [peano-numbers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
874 浏览

numbers - 钢琴(Peano)号码?

我正在听 steve yegge 播客(#29,大约 21:29),其中一部分是,他们在谈论“如何判断与您交谈的人是否聪明”,他们以一种方式说是谈论“聪明人的事情”(我在解释),比如“钢琴数字”和“λ演算”。
我有足够的把握承认我不是世界上最聪明的人,但即使谷歌似乎也无法告诉我“钢琴号码”是什么。那么,我是否听错了播客上所说的内容?谁能告诉我什么是“钢琴号码”?

0 投票
2 回答
1799 浏览

haskell - Haskell Peano 数字

我正在尝试编写一个函数

把一个整数变成它的皮亚诺数。

我有数据:

例如,

等等。

我不知道如何让它打印出给定整数的皮亚诺数。我从未使用过 Peano 号码,因此我们将不胜感激任何帮助!

谢谢!

0 投票
1 回答
785 浏览

scala - Converting integers to peano numbers using the type system

This is a follow-up of a question I asked almost two years ago. I am still experimenting with the type system to write a small linear algebra library where the dimensions of vectors/matrices/tensors is encoded using the type system (with Peano numbering). This allows the compiler to restrict the binary operations to objects of corresponding dimensions.

It works well, but I must specify each dimension type manually. For example (using shapeless natural numbers):

It's ok for small sizes but it gets boring if I need to define the size _1024. I'm trying (without success) to find a way to convert (at compile time) an integer literal to the corresponding Peano-number type.

In Daniel Sobral answer comments, I was told that this was not possible because Scala did not support dependent types. Now, Scala 2.10 has both dependent types and macros. So is there a way to achieve it ?

0 投票
1 回答
491 浏览

haskell - Haskell Peano 数和乘法中的惰性

我最近开始学习 Haskell,现在在我的课堂上,我们构建了一个 Peano 数字类并将其实例化到 Num 类型类中。

在讲座中,我的教授声称,根据您是否将后继函数视为S x = x + 1S x = 1 + x,乘法定义的适当后继情况会有所不同。分别:

此外,他声称使用这两种选择中的第一种更可取,因为它更懒惰,但我很难看到这是怎么回事。

我们查看了添加定义的示例

好于

因为评估x + y == z发生得更快,但我找不到类似的乘法案例。

讲义在这里:http ://cmsc-16100.cs.uchicago.edu/2014/Lectures/lecture-02.php

0 投票
3 回答
161 浏览

haskell - 有没有一种方便的方法来使用单遍历构造更大的类型级别的皮亚诺数?

mono-traversable 包对MinLen. 我可以使用链式Succs 构造它们:

但这很快就会失控:

有没有一种方便的方法来构造更大的 Peano 数?我看到 GHC 有一个 TypeLiterals 扩展,但我不确定我是否可以在这里使用它。或者,我可以制作同义词,例如:

等等; 类似的东西是否已经存在于某个地方?

0 投票
3 回答
1024 浏览

java - 该 Java 程序使用迭代将自然数转换为集合论编码。请求递归解决方案的帮助/策略?

我试图更好地理解 ZFC 集合论,特别是计算机程序如何模拟无穷大公理以“构造”自然数。我见过的用于构造自然数的典型符号是:“{”、“}”和“,”。

下面的代码有效,但我希望有一个纯粹的递归解决方案。一个给定一个自然数(这里使用 int),递归地将相应的字符串构建到它的集合论编码中,然后返回它。理想情况下,我希望它能够在不使用任何额外数据结构(如当前使用的字符串数组)的情况下工作。

如果运行时间很慢(指数型)也没关系。使用递归有时会使过程的表达更简单,更简洁/优雅且更易于理解,我非常想看看这种解决方案可能是什么样子,无论性能如何。最终,我想更好地理解数学/数字的基础。我有很多问题,但认为这可能是一个很好的开始方式。谢谢!

0 投票
1 回答
136 浏览

scala - 无形中 Nat 的定义中的类型声明是什么?

这是Natin package的定义shapeless

声明有什么type用?在我看来,一旦删除,该定义同样适用。

0 投票
1 回答
65 浏览

logic - 这本教科书关于皮亚诺算术有错误吗?

我在斯坦福大学提供的在线逻辑介绍开放课程中遇到了这个疑问。

在这本教科书的第 9.4 节下:http: //logic.stanford.edu/intrologic/secondary/notes/chapter_09.html

它说:

这里显示的公理用 0 和 s 定义了相同的关系。(其中下面的函数常数字母 s 表示后继函数,例如 s(0)=1, s(1)=2, s(2)=3 )

∀x.same(x,x)

∀x.(¬same(0,s(x)) ∧ ¬same(s(x),0))

∀x.∀y.(¬same(x,y) ⇒ ¬same(s(x),s(y)))

据我了解,:

第一句话说两个相同的数字是相同的。第二句和第三句用于定义不同之处。

第二个说没有任何数字的后继与0相同。

第三个说如果两个数字不相同,那么它们的继任者就不一样。例如,如果 1≠3,则 2≠4。

但是,我认为第三句话应该是双条件的,因为如果我没记错的话,定义没有涵盖被证明的数字小于给定数字的情况,否则可以说如果2≠ 4,则 1=3。

所以我想知道这是教科书上的错误还是我的推理有问题。

0 投票
1 回答
351 浏览

functional-programming - Peano numbers in Rust

I wanted to write a simple implementation of Peano numbers in Rust and it seems that I managed to get the basics working:

However, when I decided to take look at how it was implemented by others, I saw that noone decided to do it with an enum, but rather with structs and PhantomData (example 1, example 2).

Is there something wrong with my implementation? Is this because Zero and Succ are enum variants and not true types (so my implementation is not actual type arithmetic)? Or is it just preferable to do this the "mainstream" way due to difficulties that would occur if I expanded my implementation?

Edit: my struggles with implementing Peano numbers using structs can be seen here.

0 投票
2 回答
447 浏览

scala - 如何测试皮亚诺数

我正在Coursera 上学习Scala 中的函数式编程原理课程。有一个Peano 数字的实现示例,如下所示:

我写了几个单元测试。大多数通行证,但以下通行证 - 以天真的方式编写 - 因明显原因而失败(不同实例的比较):

我的问题是:应该如何实施单元测试来成功测试 peano 数字的 + 和 - 操作?

以防万一,在这里您可以找到剩余的单元测试