Aplicando uma função com várias entradas usando o mapa? (Haskell)
Pergunta
G'day pessoal,
Tentando atualmente terminar um pouco de lição de casa em que estou trabalhando e tendo um problema em que estou tentando aplicar o mapa em uma função que aceita várias entradas.
Então, no caso de estar usando o ProcessList F (X: XS) = MAP Aceleratelist F XS X XS
Lista de processos recebe um valor flutuante (f) e uma lista que classifica em outra lista
A Acelere List leva um valor flutuante (f) uma lista e um objeto de lista através do qual retorna outro objeto de lista
Sei que meu código de lista de aceleração está correto, mas não posso, para a vida minha, obter a sintaxe para este código funcionando:
processList :: Float -> [Object] -> [Object]
accelerate f [] = []
accelerate f [x] = [(accelerateForce f x x)]
accelerate f (x:xs) = map accelerateList f xs x xs
Alguma ideia? Estou coçando a cabeça há cerca de 3 horas. Eu sei que é algo verdade simples.
Solução
Primeiro de vocês provavelmente vai querer usar alguns parênteses aqui:
map accelerateList f xs x xs
A função map
leva exatamente dois argumentos (não cinco), então você deve fazer algo assim, por exemplo:
map (accelerateList f xs x) xs
Mas, por outro lado, isso não se encaixa nas assinaturas de sua função. O problema é provavelmente que você não estruturou sua solução de uma maneira boa o suficiente. Pode ser uma pergunta separada, mas explicar o que você está tentando realizar com a função acelerada (ou qualquer um é o "top") certamente ajudaria.