Вы находитесь внутри монады ввода-вывода, поэтому каждый раз, когда вы пишете стрелку «bind» <-
, справа должна быть операция ввода-вывода. Итак, короткий ответ: вы не хотите использовать <-
для значения x
.
Теперь, похоже, вы хотите вызвать print_matrix для каждого элемента списка, а не для одного элемента. В этом случае я думаю, что Macke находится на правильном пути, но я бы вместо этого использовал mapM_:
mapM_ (putStr . print_matrix . fst) x
должен сделать свое дело.
Причина в том, что вы явно говорите, что хотите putStr
каждый элемент, по одному, но вас не волнует результат самого putStr
.