【发布时间】:2020-11-02 06:31:24
【问题描述】:
所以我真的很困惑,因为我是 sml 的新手,而且我在创建函数的语法方面遇到了问题。
说明如下……
numberPrefix: 字符列表 → 字符串 * 字符列表
编写一个名为 numberPrefix 的函数,它返回(成对)一个字符串,该字符串表示在 输入列表的开头和此前缀之后的剩余字符。您可以使用 Char.isDigit 和 实现中的 String.implode 函数。 例如,
- 数字前缀 [#"a", #"2", #"c", #" ", #"a"];
val it = ("", [#"a", #"2", #"c", #" ", #"a") : 字符串 * 字符列表
- 数字前缀 [#"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
;
我想我想要做的是首先附加到一个单独的列表,如果它确实是一个数字,一旦我到达 char 列表的成员,然后我想使用 String.implode 返回该列表,但我是对传递辅助函数甚至只使用“let”表达式的想法猛烈抨击。如何在本质上创建一个单独的列表,同时跟踪我在原始列表中的位置,以便我可以以正确的格式返回结果?
【问题讨论】: