Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
7 / 7 / 4
Регистрация: 08.10.2012
Сообщений: 93

Как запустить данные функции?

29.10.2012, 20:29. Показов 3240. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Задание следующее

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

Нашёл в интернете код к этому заданию
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
data Number n = Zero | Next n (Number n)
 
dec (Next n _) = n
dec _ = Zero
 
fromInt 0 = Zero
fromInt n = Next $ fromInt ((n - 1) _)
 
toInt Zero = 0
toInt (Next n _) = succ (toInt n) 
 
plus Zero n = n
plus t n = Next (plus (dec t _) n) 
 
mult Zero _ = Zero
mult t n = plus n (mult (dec t _) n)
 
fact Zero = Next Zero
fact n = mult n (fact (dec n _) _)
Засунул в файл func.hs
Запускаю его, а как обратиться к каждой из функций не знаю

Подскажите, что вводить в каждую функцию? какие параметры передавать?
Заранее спасибо!

Добавлено через 22 минуты
Тот код неверный
Вот правильный

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
data Number = Zero | Next Number deriving Show
 
dec (Next n) = n
 dec _ = Zero
 
 fromInt 0 = Zero
 fromInt n = Next $ fromInt (n - 1)
 
 toInt Zero = 0
 toInt (Next n) = succ (toInt n) 
 
 plus Zero n = n
 plus t n = Next (plus (dec t) n) 
 
 mult Zero _ = Zero
 mult t n = plus n (mult (dec t) n)
 
 fact Zero = Next Zero
 fact n = mult n (fact (dec n))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2012, 20:29
Ответы с готовыми решениями:

Как запустить данные функции?
Подскажите, что вводить в каждую функцию? какие параметры передавать? Заранее спасибо! определить целые числа с помощью рекурсивных...

Как запустить несколько асинхронных сокетов и принять данные от них?
Уважаемые форумчане помогите пожалуйста, есть пример получения html страницы: using System; using System.Net; using...

Как запустить процесс и затем ввести данные в поток stdin?
После выполнения команды, далее выводится требование ввести пароль. А как затем ввести этот пароль программно? exec('pg_dumpall', { ...

1
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
30.10.2012, 13:59
Все функции имеют тип Number -> Number
Можно в интерпретаторе написать
Code
1
fact (Next$ Next$ Next$ Zero)
Должно вывести 6 (прописью).
Если компилируешь его, то нужно указать точку входа:
Haskell
1
2
main :: IO ()
main = print$ fact$ Next$ Next$ Next$ Zero
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2012, 13:59
Помогаю со студенческими работами здесь

Как в Delphi запустить другую программу и взять от туда данные
Как в Delphi запустить другую программу и взять от туда данные. Пример: В программе при нажатии кнопки открывается другая программа, а...

Как запустить командную строку, выполнить команду и считать полученные данные
Добрый вечер. Подскажите как запустить командную строку, выполнить команду и считать полученные данные?

Как мне запустить внешнюю программу и получить из нее выходные данные?
Как мне запустить внешнюю программу и получить из нее выходные данные?

Как запустить несколько экземпляров функции
Здравствуйте! Я хочу запускать несколько экземпляров функции Pi_num__idea2 с разными параметрами, использую несколько процессов и каждый...

как запустить выполнение функции по графику
добрый день. мне нужно в Access запустить выполнение функции с определенной периодичностью, по графику. Как это сделать не знаю.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru