gpt4 book ai didi

Haskell ASCII 代码

转载 作者:行者123 更新时间:2023-12-04 02:44:41 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,它接受一个a(可以是任何类型:int、char...)并创建一个列表,其中包含input 复制了它的 ASCII 码对应的次数。

我创建了这个:

toList n = replicate (fromEnum n) n

当尝试在 cmd 中使用该函数时,它说它可以将预期类型 int 与 char 匹配,但是如果我直接在 cmd 中使用我的函数和实际值,它会按照预期进行.

我的意思是:toList 'a' --> 给我一个错误

replicate (fromEnum 'a') 'a' --> 给出一个没有问题的结果

我已经加载了模块 Data.Char (ord)

我该如何解决这个问题,为什么会发生这种情况?

提前致谢:)

最佳答案

您缺少的是类型声明。你说你希望它能够接受 any 类型,但你真正想要的是 toList 接受作为 Enum 实例的东西>。当你在 GHCi 中使用它时,它会让你做 let toList n = replicate (fromEnum n) n,因为 GHCi 会自动选择一些似乎有意义的默认值,但是当编译一个带有 GHC 的模块,如果没有类型声明,它将无法工作。你要

toList :: (Enum a) => a -> [a]
toList n = replicate (fromEnum n) n

你必须在类型签名中包含 (Enum a) => 的原因是因为 fromEnum 具有类型签名 (Enum a) = > a -> 整数。所以你会看到它不只是采用任何类型,只采用那些具有 Enum 实例的类型。

关于Haskell ASCII 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com