当前位置: 首页 > 知识库问答 >
问题:

为什么不是(20>)。长取10==const True

鲁弘厚
2023-03-14

事实上,20

或者,换句话说,(20

(20)

这是对我上一个问题的跟进。

在那里,我询问了为什么修复错误打印***异常:重复且无限。

答案令人满意。

然而,我玩了一下ghci,意识到take 0$fix error预期返回,而length$take 0$fix error返回0

另一方面,下面打印***异常:无限流:

20 > (length $ take 10 $ fix error)

我知道,即使计算了fix error的一个元素(实际上是尝试的),结果也是如此,但我的问题是:为什么首先需要在特定表达式中对其中任何一个元素进行计算?毕竟,length$take 10$whatever只能是

实际上,我看到20

也许这就是威廉·范·奥塞姆在这条评论中的意思。

不管怎样,因为我可以把上面的表达式写成

((20 >) . length . take 10) $ fix error

我很想这么说

(20 >) . length . take 10 === const True

因此,我认为((20)是合理的

但事实并非如此。为什么?


共有1个答案

封烨伟
2023-03-14

take 10必须确定其参数是[]还是(:)值。

const True没有。

长度是严格的,因为它必须遍历其整个参数。组合并不意味着它只需要遍历足够的值即可获得足够大的数字来伪造(20

 类似资料:
  • 问题内容: 我们尝试使用以下Java代码从字符串转换为: 我们得到一个长度为22个字节的字节数组,我们不确定此填充来自何处。如何获得长度为20的数组? 问题答案: 亚历山大(Alexander)的答案解释了为什么存在它,但没有解释如何摆脱它。您只需要在编码名称中指定所需的字节序即可:

  • 当我只运行预处理器时,输出文件包含20。 然而,据我所知,预处理器只是进行文本替换。所以这就是我认为正在发生的事情(这显然是错误的,但idky): NUM被定义为10 所以我认为输出应该是10而不是20。有什么能解释出哪里出了问题吗?

  • 问题内容: 为什么 初始空间 大于“ 10”的“ 2”? 我在latin1和utf8英语归类中都尝试过: 我知道它与类型有关,因为当它被强制转换时,它可以按预期工作: 这里到底发生了什么? 编辑: 以上所有操作都是在Fedora 13中使用8.4.8完成的。但是我只是在Centos 6中使用9.04进行了测试,结果相同: 数据库清单 新编辑: 这是为了进一步混淆: 问题答案: 我认为Postgre

  • 使用C++20的时,我注意到似乎不能满足概念。根据的定义,在C++20中应该实现以下功能: 这个需求应该实现与的对称比较--根据我的理解,这足以满足。 奇怪的是,这个问题似乎在所有主要编译器上都是一致的。以下代码将从Clang、GCC和msvc中拒绝: 联机尝试 但是,接受与相同的断言: 联机尝试 除非我误会了什么,这似乎是个窃听器。我的问题是,这是三个编译器实现中的一个巧合的bug,还是C++2

  • 问题内容: 我有这个代码: 而且我希望dateFormat.parse调用会引发ParseException,因为我提供的年份长5个字符,而不是像我定义的格式那样长4个字符。但是出于某种原因,即使将lenient设置为false,此调用也会返回Date对象10/20/20128。 这是为什么?这对我来说没有多大意义。还有其他设置可以使其更加严格吗? 问题答案: 20128是有效的一年,我想Java

  • 我试图表达10的幂10,但它不起作用,所以我认为问题是数据类型的范围。 我的预期答案是10000000000,但运算结果是1410065408 有什么问题?