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