Haskell - 数组

Fer*_*rry 1 arrays haskell

我是Haskell的新手,陷入了一个简单的问题:

aaa ::  [[(Char, Float)]] -> Float ->  [[(Char, Float)]]
aaa [[]] a = error "no indata"
aaa [[(a,b)]] c = [[(a, b/c)]] 
aaa inD c = ??
Run Code Online (Sandbox Code Playgroud)

如何使它在Array中使用多个元素?

例如: aaa [[('a',3)],[('b',4)],[('c',5)]] 4

结果: [[('a',0.75)],[('b',1)],[('c',1.25)]]

任何暗示,谢谢!

phi*_*mue 5

您可以按如下方式在列表上定义操作(我给出了一个更简单的示例,为每个列表项添加1)

f [] = []
f (head:tail) = (head + 1):(f tail)
Run Code Online (Sandbox Code Playgroud)

head:tail代表一个清单; 更具体地说,它表示第一个列表项(head)和剩余列表,如果我们取第一个项目(tail).然后,您通常使用您的东西head并进行递归调用tail.

完成你的例子(没有测试)这将产生:

aaa ([(a,b)]:tail) c = [(a, b/c)] : (aaa tail c)

一件事:您正在处理列表,并希望以特定方式修改列表的每个元素(但每个元素都以相同的方式转换).对于这种情况,Haskell提供其内在map功能,它需要:

  • 转换列表项的功能
  • 项目清单

作为参数并返回转换后的列表.