我是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)]]
任何暗示,谢谢!
您可以按如下方式在列表上定义操作(我给出了一个更简单的示例,为每个列表项添加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功能,它需要:
作为参数并返回转换后的列表.
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |