【问题标题】:Applying a function with multiple inputs using Map? (Haskell)使用 Map 应用具有多个输入的函数? (哈斯克尔)
【发布时间】:2010-05-16 09:11:41
【问题描述】:

G'day 伙计们,

目前正在尝试完成我正在处理的一些家庭作业,并且遇到了一个问题,即我正在尝试将 map 应用于接受多个输入的函数。

所以在我使用 processList f (x:xs) = map accelerationList f xs x xs 的情况下

processList 被赋予一个浮点值 (f) 和一个 List,它排序到另一个 List 中

Accelerate List 采用浮点值 (f) 一个 List 和一个 List Object,通过它返回另一个 List Object

我知道我的 Accelerate List 代码是正确的,但我一辈子都无法让这段代码的语法正常工作:

processList :: Float -> [Object] -> [Object]
accelerate f [] = []
accelerate f [x] = [(accelerateForce f x x)]
accelerate f (x:xs) = map accelerateList f xs x xs

有什么想法吗?我已经挠头大约3个小时了。我知道这真的很简单。

【问题讨论】:

    标签: list haskell map ghc


    【解决方案1】:

    首先你们可能想在这里使用一些括号:

    map accelerateList f xs x xs
    

    函数map 只接受两个参数(不是五个),因此您应该执行以下操作,例如:

    map (accelerateList f xs x) xs
    

    但另一方面,这不符合您的函数签名。问题可能是您没有以足够好的方式构建您的解决方案。可能是一个单独的问题,但解释您试图使用加速功能(或哪个是“顶级”功能)实现的目标肯定会有所帮助。

    【讨论】:

    • 我绝对认为这是一个结构错误,谢谢。我正在尝试映射一个函数,该函数在整个对象列表中比较列表中的两个元素。因此,对于每个对象,我必须将其与列表中的其他对象进行比较以计算它的运动。
    • 经过一些麻烦,我实际上得到了 map 正常工作,并且我测试过的函数也能正常工作:加速 f (x:xs) = map (accelerateList f xs) xs 效果很好。谢谢大家的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多