Это не a преобразование. Список [3,2,1]
может «выглядеть» как номер 321
, но это не взаимно однозначное отношение (поскольку Грэг упоминал - [32,1]
выглядит примерно одинаково), и, конечно же, не канонический (зачем использовать базу 10? Это на самом деле шестнадцатеричный?) Следовательно, действительно нет причин, почему это должно быть быть особенно простым в Haskell . This is not JavaScript, fortunately.
Повтор сообщения ... выглядит, как номер 321
, и все, это не имеет отношения к числу действительно значимым образом. Итак, если вам действительно нужно реализовать эту функцию сомнительной ценности (я думаю, вам не следует), то вы можете также сделать взломы, чтобы фактически использовать “, выглядит как вещь ”. Т.е.,
fromDigits = read . filter (not . (`elem`"[,]")) . show
Это использует Show
экземпляр списков, чтобы обращенного перечень [3,2,1]
в реальную строку "[3,2,1]"
, затем отбрасывает список связанных символов и считывает сцепленную строку "321"
обратно, получая номер 321
.
Помимо того, что это вообще довольно просто реализовать чистые функции в Haskell ...
Что вы намерены ваша программа, чтобы сделать, если список ввода имеет многозначные числа, таких как '[3, 21, 0]'? –
Вам нужно будет указать позицию каждого номера и (IIRC), поднимите номер на базу (я угадываю 10 здесь) и добавлю его к предыдущим номерам. – Carcigenicate
Они не будут допущены, я просто делаю цифры от 0-9, ничего 10+ – camrymps