【问题标题】:Non-exhaustive patterns in function scalarNew [duplicate]函数scalarNew中的非详尽模式[重复]
【发布时间】:2019-01-22 13:21:27
【问题描述】:

“scalarNew 函数中的非穷举模式” 在这种情况下是什么意思?

scalarNew :: [Integer]->[Integer]->Integer
scalarNew (x:xs) (y:ys) 
     | (length xs == length ys) = x * y + scalarNew xs ys
     | otherwise = error "error"

【问题讨论】:

  • 尝试写一个没有递归的版本。提示:使用zipWithsum

标签: haskell


【解决方案1】:

使用递归时必须添加基本情况。在这种情况下,基本情况是两者都是空列表。

scalarNew :: [Integer] -> [Integer] -> Integer
scalarNew []     []        = 0
scalarNew []     (y:ys)    = error "error"
scalarNew (x:xs)    []     = error "error"
scalarNew (x:xs) (y:ys) 
  | length xs == length ys = x * y + scalarNew xs ys
  | otherwise = error "error"

编辑:只处理一个空列表的情况

【讨论】:

  • 好的,我明白了,谢谢你
  • 别忘了标记为已解决;)
  • 您忽略了两种情况:两个列表中只有一个为空。在某些情况下,这将继续产生错误。
  • @AJFarmar 是的!实际上忘记了。已编辑,谢谢 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多