Привет, я совершенно новичок в haskell и просто получил структурную индукцию и задавался вопросом, может ли кто-нибудь объяснить, какие шаги я должен предпринять, было бы очень полезно.Структурные индукции в haskell. Списки и сумма
Вопрос: - вычисляет сумму всех чисел в списке
sum :: [Integer] -> Integer
sum [] = 0
sum (x:xs) = x + sum xs
- присоединяет два списка
(++) :: [Integer] -> [Integer] -> [Integer]
[] ++ ys = ys
(x:xs) ++ ys = x : (xs ++ ys)
Докажи (с помощью структурной индукции), что имеет место равенство, для всех списков целых чисел xs
и ys
:
sum (xs ++ ys) = sum xs + sum ys
Не забывайте называть IH. на стадии индукции. Также убедитесь, что вы четко указываете причины, по которым вы делаете шаги в своих доказательствах.
Мои шаги: Чтобы доказать:
sum (xs ++ ys) = sum xs + sum ys
Доказательство: по структурной индукции
Пусть P() < --- действительно не знаю, что типа там, так что если кто-то может взять его там я бы очень оценил это!
Если вы надеетесь, что кто-то собирается сделать вам домашнее задание, я надеюсь, что ваши надежды будут разбиты. См. Также [Как я могу задать и ответить на домашние вопросы?] (Http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions) за советом по переводу этой копии -and-paste в вопрос, который может быть продуктивным как для вас, так и для сайта. Тем временем я следую совету на этой странице в голосовании, чтобы закрыть этот вопрос как «слишком широкий». –
Не домашнее задание, хотя. Это старый экзаменационный вопрос из университета, в котором я хочу принять участие в следующем году. Поэтому не подходите к выводам. – Huskey
Фактически, «домашнее задание» против «не домашнее задание» не имеет значения. Важно то, что вы, очевидно, не приложили никаких усилий для решения проблемы самостоятельно, и не пытайтесь идентифицировать и сообщить нам точно, что вам нужно знать, чтобы добиться прогресса. –