В модуле определена функция Data.Char , называемая digitToInt .Он принимает символ и возвращает число, если символ может быть интерпретирован как шестнадцатеричная цифра.
Если вы хотите использовать эту функцию в своем первом примере, где числа разделены пробелом, выВам нужно будет избегать пробелов.Вы можете сделать это с помощью простого фильтра
> map digitToInt $ filter (/=' ') "1 2 1 2 1 2 1"
[1,2,1,2,1,2,1]
Во втором примере, где цифры вообще не разделены, еще проще, потому что вам не нужен фильтр
> map digitToInt "1212121"
[1,2,1,2,1,2,1]
Я бы предположил, что digitToInt лучше, чем read , потому что это не зависит от типа выражения, что может быть сложно (что, в свою очередь, как я нашел этот пост = P).В любом случае, я новичок в haskell, поэтому могу ошибаться =).