Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Haskell
Перезагрузить страницу Проблема с кодом, ошибка
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
YOtaMix YOtaMix вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2015
По умолчанию Проблема с кодом, ошибка - 07.05.2015, 21:30

Доброе время суток, помогите, пожалуйста разобраться:
Теоретически возможно, хотя и неэффективно, определить целые числа с помощью рекурсивных типов данных следующим образом:
data Number = Zero | Next Number
Т. е. число является либо нулем (Zero), либо определяется, как число, следующее за предыдущим числом. Например, число 3 записывается как Next (Next (Next Zero)). Определите для такого представления следующие функции:
1) fromInt, для заданного целого числа типа Integer возвращающую соответствующее ему значение типа Number.
2) mult :: Number -> Number -> Number, умножающую свои аргументы.
помогите, пожалуйста, разобраться, что не так со второй функцией, она не перемножает, а просто выводит первый параметр, либо зацикливается:

haskell Код:
data Number = Zero | Next Number deriving Show
 
dec (Next n) = n
dec Zero= Zero
 
fromInt 0= Zero
fromInt n = Next $ fromInt (n - 1)
 
mult :: Number -> Number -> Number
mult Zero Zero= Zero
mult t n =  Next $  mult (dec n) (dec t)
Ответить с цитированием
  (#2 (permalink)) Старый
beroal beroal вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 3
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 13.12.2002
По умолчанию 08.05.2015, 01:19

Потому что определение функции mult неправильное. Используйте
haskell Код:
t `mult` (Next n) == t `add` (t `mult` n)
Next аналогичен добавлению единицы.

Последний раз редактировалось beroal; 08.05.2015 в 01:25
Ответить с цитированием
  (#3 (permalink)) Старый
beroal beroal вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 3
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 13.12.2002
По умолчанию 08.05.2015, 01:24

Некритичные замечания.

Функция dec вам не нужна. Пишите
haskell Код:
mult t (Next n) =

Это не целые числа, а натуральные.

Next принято называть Succ.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуста з кодом С++ до C# olegvach .NET 0 24.11.2014 19:21
Помогите разобраться с кодом Chocolatecandy23 Prolog 2 24.05.2012 23:08
Где ошибка и в чём проблема..GetVersionEx Vyacheslavovich Visual Basic 0 21.11.2011 23:14
Помогите с кодом=(язык C 4iguvarka Вопросы начинающих программистов 0 26.10.2011 23:58
Как правильно работать с кодом php Volk<<prog>> Вопросы начинающих программистов 5 25.07.2011 09:33
Помогите разобраться с кодом Grimaza PHP 2 04.05.2011 20:20
Как разобраться с кодом в С++ Bodrik Вопросы начинающих программистов 2 11.12.2009 10:55
Работа с PHP кодом при программировании AndrewEA Вопросы начинающих программистов 5 06.10.2009 21:28
Помогите с кодом VBA madmike Visual Basic 11 20.12.2007 18:02
Подскажите что за ошибка!! Проблема с памятью Timmi Софт и программы 3 28.09.2007 01:27
Диск под кодом FZk Накопители 7 08.08.2007 02:55
Как работать с кодом символа АЛЬБИНА Pascal 10 10.04.2006 09:30



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов