Так что я действительно запутался, так как я новичок в sml, и у меня проблемы с синтаксисом того, как я хочу создать свою функцию.
инструкции следующие ...
numberPrefix: список символов → строка * список символов
Напишите функцию с именем numberPrefix, которая возвращает (в виде пары) строку, представляющую символы цифры в начале списка ввода и оставшиеся символы после этого префикса. Вы можете использовать в своей реализации функции Char.isDigit и String.implode. Например,
- numberPrefix [#a, # 2, #c, #, #a];
val it = (, [#a, # 2, #c, #, #a): строка * список символов
- numberPrefix [# 2, # 3, #, #a];
val it = (23, [#, #a]): строка * список символов
Вот мой код пока ...
fun numberPrefix(c:char list):string*char list =
case c of
[] => []
|(first::rest) => if isDigit first
then first::numberPrefix(rest)
else
;
Я предполагаю, что я пытаюсь сначала добавить в отдельный список, если это действительно цифра, как только я достигну члена списка символов, я хотел бы вернуть этот список с помощью String.implode, но я бью головой об идее передачи вспомогательной функции или даже просто использования выражения let. Как я могу создать отдельный список, одновременно отслеживая, где я нахожусь в исходном списке, чтобы я мог вернуть результат в правильном формате?