Форум программистов, компьютерный форум, киберфорум
Наши страницы
Haskell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Bolbine84455
5 / 5 / 3
Регистрация: 12.03.2014
Сообщений: 339
1

Ошибка при загрузке файла (с функциями)

16.07.2017, 10:57. Просмотров 870. Ответов 4
Метки нет (Все метки)

Содержимое файла ниже. Проблема с функцией myexpr. Что-то не так с типами, но я не могу понять сообщение об ошибке:
Ошибка при загрузке файла (с функциями)

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib(n-2) + fib(n-1)
 
fact :: Integer -> Integer
fact 0 = 1
fact n = n*fact(n-1)
 
nod :: Integral a => a -> a -> a
nod a 0  =  a
nod a b  =  nod b (a `mod` b)
 
myexpr :: Integer -> Integer -> a
myexpr n m = nod (fib(n),fact(n `mod` m))
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2017, 10:57
Ответы с готовыми решениями:

Ошибка при загрузке файла
Хочу сделать загрузку файла в папку, но при загрузке выдает ошибку Warning: move_uploaded_file()...

Ошибка при загрузке файла
Поставил скрипт http://www.softtime.ru/scripts/upload.php , но при загрузке файла выдает ошибку:...

Ошибка ssis пакета (vs2008) при загрузке .csv файла в БД при запуске VS2015
SSIS пакет создан в vs2008. Работал. Сменился MS Server на 2015 и vs2015. Загружаю. Выдает ошибку...

Ошибка при загрузке файла из интернета
Вот качаю файл таким образом My.Computer.Network.DownloadFile("тут сылка.exe", "с:\test.exe")...

Ошибка при загрузке файла на сервак
Возникла небольшая проблема, нужно загрузить файл на сервак, через браузер все отлично отсылается и...

4
Curry
3116 / 2131 / 261
Регистрация: 01.06.2013
Сообщений: 4,598
Записей в блоге: 9
16.07.2017, 11:39 2
Лучший ответ Сообщение было отмечено Bolbine84455 как решение

Решение

У вас проблема не только с типами. Синтаксис Haskell посмотрите в любом учебнике.
Haskell
1
2
myexpr :: Integer -> Integer -> Integer
myexpr n m = nod (fib n) (fact (n `mod` m))
Список аргументов функции в Haskell не помещается в скобки () и не разделяется запятыми. Т.е. то что на Си
C
1
foo(x+1,z,t-2)
На Haskell
Haskell
1
foo (x+1) z (t-2)
С типами сложнее. Различайте => (которое только перед перечислением типов аргументов м.б.) и разделитель аргументов (и возвращаемого значения) - ->.
Haskell
1
fact :: Integer -> Integer
Означает что и аргумент функции, и возвращаемое значение конкретный тип Integer.
А
Haskell
1
nod :: Integral a => a -> a -> a
Означает что оба аргумента и возвращаемое значение какой то тип являющийся экземпляром класса типов Integral, т.е. с ними можно использовать функции определённые для Integral, например mod. Конкретный тип Integer является экземпляром (instance) Integral, так что функцию nod можно вызывать для Integer, что и делается в myexpr.
Если хотите на самом деле что то понять, то список учебников в этом разделе есть.
3
Catstail
Модератор
25156 / 12833 / 2370
Регистрация: 12.02.2012
Сообщений: 20,916
16.07.2017, 17:53 3
Если есть проблемы с типами, то для простых функций можно типы вообще не указывать. Haskell выведет типы сам. Ну и если очень хочется работать "со скобками" то можно поступить так:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
fib 0 = 0
fib 1 = 1
fib n = fib(n-2) + fib(n-1)
 
fact 0 = 1
fact n = n*fact(n-1)
 
nod (a,0)  =  a
nod (a,b)  =  nod (b,a `mod` b)
 
myexpr n m = nod (fib(n),fact(n `mod` m))
 
-- Проверка:
 
*Main> myexpr 10 20
5
*Main> :t fib
fib :: (Eq a1, Num a, Num a1) => a1 -> a
*Main> :t fact
fact :: (Eq a, Num a) => a -> a
*Main> :t nod
nod :: Integral t => (t, t) -> t
 
*Main> :t myexpr
myexpr :: Integral t => t -> t -> t
2
Curry
16.07.2017, 18:00
  #4

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
Ну и если очень хочется работать "со скобками" то можно поступить так
Какой кошмар! :)

0
Case-Man
167 / 107 / 22
Регистрация: 02.01.2012
Сообщений: 596
21.07.2017, 02:16 5
Цитата Сообщение от Catstail Посмотреть сообщение
для простых функций можно типы вообще не указывать
У меня часто бывает наоборот - стоит прописать типы функций - и сообщения об ошибках становятся более разумными.
3
21.07.2017, 02:16
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2017, 02:16

При загрузке файла ошибка 502
Здравствуйте, загружаю файл выше 2мб выдает ошибку 502 Bad Gateway nginx/1.4.6 (Ubuntu). Не могу...

Ошибка при загрузке файла по TFTP
Имеется конфиг /ip tftp add allow-rollover=yes ip-addresses=192.168.1.0/24 real-filename=/PXE/ В...

Ошибка при загрузке файла данных
Доброго времени суток. Моя задача очень проста, но к сожалению не хватает знаний в области...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.