@reaget

Как происходит считывание в Haskell?

Здравствуйте! Я новичок в Haskell.

Для меня пока синтаксис очень не понятен. Начал изучать недавно.
Как происходит считывание в Haskell?

Друг придумал мне два задания:
1.На вход: целочисленный список. Возвести в квадррат все отрицательные элементы.
2.На вход: матрица. Подсчитать сумму положительных элементов на побочной диагонали матрицы.

Но что-то я пока не понимаю как считывать данные..
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 3
zagayevskiy
@zagayevskiy
Android developer at Yandex
Тебе нужна монада IO
Ответ написан
Комментировать
includedlibrary
@includedlibrary
Список считать можно вот так. На входе ожидается строка, в которой все числа разделены пробелом:
readIntList :: IO [Int]
readIntList = do
	line <- getLine
	let ws = words line
	    ints = map read ws
	return ints


Или более короткий вариант:
readIntList :: IO [Int]
readIntList = fmap (map read . words) getLine


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

1) получение ввода (в main или аналогичной процедуре с доступом к IO)
2) обработка данных (чистыми функциями)
3) вывод результата (в main или аналогичной процедуре с доступом к IO)

1 и 3 решается использованием функций из System.IO (если не выходить за пределы базовой библиотеки).
Я настоятельно рекомендую вычитать весь ввод из файла или консоли и только потом приступать к его разбору. Иначе от попыток решить несколько разных задач в один заход будет каша в голове.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы