可能重复:
Haskell错误:无法匹配预期类型Integer' against inferred typeInt'
我怎么能转换Int到Integer在Haskell?
我现在正在努力解决这个问题.我想确定一个整数是否可以被11整除.从我所读到的,一个整数可以被11整除,当它的数字的和(一次+,一次 - )可被11整除时.
例如:56518可以被11整除,因为8-1 + 5-6 + 5 = 11,11可以被11整除.
我如何在Haskell中写下这个?提前致谢.
可能重复:
使用Haskell将数字拆分为数字
如何将整数转换为整数列表Exmple:输入:1234输出:[1,2,3,4]任何关于这个问题的想法?
我需要使用签名创建一个函数diffFolge :: (Integer, Integer) -> [Integer],当应用于参数pair (m, n)(m, n> 0)时,会返回一个降序的数字列表,即数字之间的差异n.结果列表的第一个元素是m,最后一个元素始终大于0且最后一个元素或者0严格小于的值0.
我写的如下:
diffFolge :: (Integer,Integer) -> [Integer]
diffFolge (m,n) = if m > 0 && n > 0 then [m,m-n..n-2*n] else []
Run Code Online (Sandbox Code Playgroud)
例
input : diffFolge (5,1)
output : [5,4,3,2,1,0]
Run Code Online (Sandbox Code Playgroud)
例
input : diffFolge (5,2)
output :[5,3,1,-1] ---> This is true by my code
Run Code Online (Sandbox Code Playgroud)
但是,使用第一个示例中给出的输入,我的函数返回[5,4,3,2,1,0,-1].我怎么能纠正这个?
maxZyklus :: UntereGrenze -> ObereGrenze -> (UntereGrenze,ObereGrenze,MaxZyklaenge)
maxZyklus m n = if m > n then (m,n,0) else if m == n then
(m,n,length(func m)
else
(m,n,length(func m)
type UntereGrenze = Integer
type ObereGrenze = Integer
type MaxZykLaenge = Integer
Run Code Online (Sandbox Code Playgroud)
我得到else第二个输入的解析错误问题在哪里?
dreiNplusEins :: Integer -> [Integer]
dreiNplusEins n = if n == 1 then [1] else if n `mod` 2 == 0 then
[n] ++ dreiNplusEins (n `div` 2)
else
[n] ++ dreiNplusEins (n * 3 + 1)
maxZyklus :: UntereGrenze -> ObereGrenze -> (UntereGrenze,ObereGrenze,MaxZyklaenge)
maxZyklus m n = if m > n then (m,n,0) else if m == n then
(m,n,length(dreiNplusEins m))
else
(m,n,0)
type UntereGrenze = Integer
type ObereGrenze = Integer
type MaxZykLaenge = Integer
Run Code Online (Sandbox Code Playgroud)
这是我的程序,这给出了错误,因为不在范围内:类型构造函数或类`MaxZyklaenge'我该如何解决它?