Меня попросили сделать функцию, которая работает как foldr
, но с непустыми списками, которая работает следующим образом: foldr1 f [x1,x2...xn] = f x1 (f x2...(f xn-1 xn)...)
.
Поэтому я определил это так:
foldr1 f [x] = x
foldr1 f (x:xs) = f x (foldr1 f xs)
foldr1 f _ = undefined
И я все еще получаю сообщение об ошибке «Неисчерпывающие шаблоны в функции foldr1», несмотря на то, что покрываю все возможности. Что я делаю не так?
foldr1
? (PS не является ли ошибка неисчерпывающих шаблонов ошибкой времени выполнения, а не ошибкой времени компиляции? Если да, то какой ввод вы даете, когда получаете ошибку?) - person Robin Zigmond   schedule 15.01.2019