【发布时间】:2020-11-24 06:51:51
【问题描述】:
我是 Haskell 的新手。我有一个Neuron 数据类型,它拥有一个Double 值列表:
data Neuron = Neuron [Double]
deriving (Eq, Read, Show)
我正在尝试对 Neuron 拥有的列表和另一个列表中的每个元素求和:
sommeNeuron :: Neuron -> [Double] -> Neuron
sommeNeuron n1 n2 = n'
where {
--n' = Neuron(zipWith (+) n1 n2);
n' = zip n1 n2
}
这给了我一个编译时错误:
无法将预期类型“[a]”与实际类型“神经元”匹配
【问题讨论】:
-
您的两个参数具有不同的类型,因此将它们称为 n1 和 n2 并不是一个好主意。假设这些数字是权重,而您的 n2 是现有权重的增量列表。所以你可以调用初始权重 ws0、增量 ws1 和结果神经元的权重 ws2。所以你的函数的主体应该是这样开始的:
sommeNeuron (Neuron ws0) ws1 = Neuron ws2 where {TODO must define ws2 as a function of ws0 and ws1}.
标签: haskell types type-mismatch algebraic-data-types custom-data-type