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

Haskell打印阶乘

尹钱青
2023-03-14

我刚刚开始编写Haskell,基本上是因为我在寻找一种比C#更强大的数学语言,现在我很困惑。

现在我只想找到4的阶乘,然后打印出来,这是我到目前为止写的:

fact n = product [1..n]
main = do
   print fact 4

当我试着调试它时,我得到了

错误:(3,8)ghc:无法匹配预期类型a1-

我做错了什么?


共有1个答案

东深
2023-03-14

您需要括号:

main = do
    print (fact 4)

GHC看到的是事实4作为单独的参数传递给print,但您想要的是将4应用于事实,然后将该结果应用于print。您还可以使用

main = do
    print $ fact 4

$运算符本身不做任何事情,但它的优先级非常低,例如,它的优先级低于*,并且它关联到右侧,因此可以编写如下内容:

f $ g . h $ m 1 $ 2 + 3

而不是

f ((g . h) (m 1 (2 + 3)))
 类似资料:
  • 我找到了一些基本的例子如何打印网页与JavaFX,但我正在寻找的例子,可以打印与应用程序内容的完整场景。有什么例子吗?

  • 我现在在学习哈斯克尔。但我正在为“类型”而挣扎。 例如,函数的类型是

  • 可以以与斐波那契数列类似的方式生成如下, 如何定义阶乘级数。 使现代化 令人尴尬的是,在添加这个问题之前,我已经试过了, 事实上,尾部的数字并不是连续的值。

  • 使用 Photoshop,您可以打印任何兼容的 3D 模型,而无需担心 3D 打印机的限制。在准备打印时,Photoshop 会自动使 3D 模型防水。Photoshop 还会生成必要的支撑结构(支架和底座),以确保您的 3D 打印能够成功完成。 准备打印 3D 对象 选择“窗口”>“工作区”>“3D”以切换到 3D 工作区。 在 Photoshop 中打开 3D 模型。如果需要,请在打开 3D

  • 设置打印方向 - 横向 设置打印方向 - 纵向

  • 我如何在Haskell中解决这个问题? Q4.HS:7:18:无法将类型“[Char]”与“IO()”匹配预期类型:IO()实际类型:“(-)”的第一个参数中的字符串,即“(+)”的第二个参数中的“n”,即“(n-1)” Q4.HS:7:24:无法将类型“[Char]”与“IO()”匹配预期类型:IO()实际类型:“(-)”的第一个参数中的字符串,即“(*)”的第一个参数中的“n”,即“(n-1)