Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何计算haskell的增长百分比_List_Haskell_Functional Programming - Fatal编程技术网

List 如何计算haskell的增长百分比

List 如何计算haskell的增长百分比,list,haskell,functional-programming,List,Haskell,Functional Programming,当我试图计算从整数列表到浮点列表的增长百分比时,我遇到了麻烦。我是哈斯克尔的新手,经验很少,不知道在哪里或什么地方寻找我的问题,因此我来到这里。:) 函数::[Ints]->[Floats] 我有一张单子 nums=[45613241234534554567] 我需要遍历该列表并计算从nums[4]到nums[0]的百分比增长 然后输出一个浮动列表。但我不确定是使用映射函数还是其他方法来解决这个问题。我需要某种方法从列表中检索两个数字,即nums[4]和nums[3],并计算增长率。我不确定

当我试图计算从整数列表到浮点列表的增长百分比时,我遇到了麻烦。我是哈斯克尔的新手,经验很少,不知道在哪里或什么地方寻找我的问题,因此我来到这里。:)

函数::[Ints]->[Floats]
我有一张单子

nums=[45613241234534554567]
我需要遍历该列表并计算从nums[4]到nums[0]的百分比增长
然后输出一个浮动列表。但我不确定是使用映射函数还是其他方法来解决这个问题。我需要某种方法从列表中检索两个数字,即nums[4]和nums[3],并计算增长率。

我不确定您需要什么,但如果是从
(n-1)
th到
n
th元素的增长,您可以这样做:

增长::[Int]->[Float]
生长量xs=
zipWith(\n'->fromIntegral(n'-n)/fromIntegral n*100)xs(尾部xs)
屈服

>增长率[45613241234534554567]
[-28.941021,-27.645788,47.334755,32.185238]
--这一点让事情变得更加明显
>生长[1,2,3,4,5]
[100.0,50.0,33.333336,25.0]
我可能把公式弄错了,你需要一些其他的公式,但是只要你想比较连续的数字,这个想法应该很清楚


使用f xs(tail xs)的技巧通常对处理列表中的连续元素很有用。这里
f
的第一个参数是
(n-1)
th,第二个参数是列表中的
n
th元素


如果您需要从
n
n-1
th(正如您似乎暗示的那样),只需翻转参数:

growths xs=
zipWith(\n'n->fromIntegral(n'-n)/fromIntegral n*100)xs(尾部xs)
>生长量[45613241234534554567]
[40.72817,38.208954,-32.12735,-24.348589]
>生长[1,2,3,4,5]
[-50.0,-33.333336,-25.0,-20.0]

如果您试图寻求增长,请选择“是”,如果问题措辞不当,请道歉。也就是说,你给我的第二个解决方案正是我想要的!!非常感谢您的帮助。如果您在生产程序中使用此代码,请注意:<代码>尾部>代码>为空列表抛出异常。-在这里,哈斯凯尔的懒惰为我节省了时间-至少现在
zipWith
在第一个参数上是模式匹配;)-试试看:
growths[]
应该会很高兴地返回
[]
——即使在这里出错,也可以通过添加
growths[]=[]
或任何您需要的内容轻松修复like@Carsten整洁的我没想到。