Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 19
1

Операция проверки ввода

27.11.2013, 22:12. Показов 674. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Надо сделать проверку того, что введенный юзером файл существует, иначе запросить повторный ввод. Что заядлый процедурник пишет:
Haskell
1
2
3
4
5
 getSrc :: String
 getSrc  = do src <- getLine
              result <- doesFileExist src
              if result then src
              else getSrc
Но вот ведь зараза, функция, которая использует ввод/ вывод должна возвращать IO a, , если я сделаю так:
Haskell
1
getSrc :: IO ()
то функция станет бесполезной, ибо в мейне я никак не узнаю, как там завершилась проверка. Если сделаю так:
Haskell
1
getSrc :: IO String
то как мне src, который String, превратить в IO String. Подскажиете, добрые люди, что делать. Или я вообще не в ту сторону копаю?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2013, 22:12
Ответы с готовыми решениями:

Как работает операция проверки файлов -N?
Здравствуйте! В справочнике про операции проверки файлов написано: -N - файл был модифицирован с...

Условие проверки, если делитель =0, то операция невозможна
Написать условие проверки, если делитель =0, то операция невозможна, иначе получить частное.

Асинхронная операция ввода/вывода
Добрый день! Помогите, пожалуйста. Нужно сделать ассинхроную операцию ввода/вывода. Делала так,...

Функция-операция ввода для класса
Доброго времени суток. Создал класс First, для него определил функции-операции ввода и вывода. С...

3
Эксперт функциональных языков программированияЭксперт по математике/физике
4300 / 2091 / 431
Регистрация: 19.07.2009
Сообщений: 3,162
Записей в блоге: 24
28.11.2013, 01:55 2
Правильно рассуждаете.
Как String превратить в IO String?
Более общно: как тип a превратить в m a, где (Monad m)?
Для этого есть натуральный морфизм return:
Haskell
1
return src :: IO String
1
163 / 163 / 22
Регистрация: 23.02.2011
Сообщений: 347
28.11.2013, 12:04 3
LIKAN_BLK, Странно, что ты работаешь в монаде IO и при этом не знаешь методов монад(которых всего 2 >>= и return). Настоятельно советую углубить знание сего материала.
0
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 19
28.11.2013, 17:19  [ТС] 4
Спасибо за помощь.
Ну я просто ессе Душкина по порядку читаю, там сказано, мол доработайте пример программы, вот и дорабатываю, а до монад ещё далеко.
0
28.11.2013, 17:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2013, 17:19
Помогаю со студенческими работами здесь

WebClient^ - откуда параллельная операция ввода вывода?
Нет сил уже, я в тупике. Скорее всего не вижу то что в глаза бросается. ОЧЕНЬ ПРОШУ: Гляньте плз......

Проверки ввода
Подскажите пожалуйста: 1. Как сделать проверку &quot;введено число или не-число&quot; ? 2. Если при вводе...

Нет проверки ввода
Функция void Enter_Information() { system(&quot;cls&quot;); cout &lt;&lt; &quot;ЗАПОЛНЕНИЕ ИНФОРМАЦИИ ОБ...

Ошибка проверки ввода
Помогите пожалуйста исправить проверку ввода { cout&lt;&lt;setw(15)&lt;&lt;&quot;Year: \t&quot;; cin&gt;&gt;note.date; if...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru