Haskell zipWith 函数出现类型不匹配错误

Getting a type mismatch error with the Haskell zipWith function

我是 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
              }

这给了我一个编译时错误:

Couldn't match expected type ‘[a]’ with actual type ‘Neuron’

只需要调整一下,

sommeNeuron :: Neuron -> [Double] -> Neuron 
sommeNeuron (Neuron n1) n2  =  Neuron (zipWith (+) n1 n2)
{-
             Neuron n1     :: Neuron
                    n1     ::   [Double]
                       n2  ::        [Double]
        zipWith (+) n1 n2  ::             [Double]
Neuron (zipWith (+) n1 n2) ::                   Neuron
-}

因为您的数据类型定义为

data Neuron = Neuron [Double]

[Double] 列表在“标签”Neuron 后面。这意味着有关系

--     data               Type
--  constructor
        Neuron   n1  ::  Neuron
    -------------------------------
                 n1  ::  [Double]
--            variable
--              name