【问题标题】:creating my own Concat function (SML)创建我自己的 Concat 函数 (SML)
【发布时间】:2013-10-16 01:22:42
【问题描述】:

我需要创建自己的 concat 函数,但很困惑如何获得所需的输出。示例:

myconcat(["a", "b", "c"]) 返回 "abc"

([]) 返回 ""

我有这个:

fun myconcat ([],L2) = L2
| myconcat(x::xs, L2) = x::myconcat(xs,L2);

它只返回我的两个字符串的列表。我怎样才能让他们输出我需要的东西?

【问题讨论】:

    标签: functional-programming sml smlnj


    【解决方案1】:

    首先,您的类型似乎不正确。
    该示例的类型为 string list -> string,您的函数似乎类型为 'a list * 'a list -> 'a list

    要连接两个字符串,您可以使用^,而不是::

    前者的类型为string * string -> string,而后者的类型为'a * 'a list -> 'a list。由于字符串不是 SML 中的列表,因此尝试将它们与 :: 连接会导致 类型错误。

    要真正做你想做的事,用最简单的方式尝试

    fun myconcat L = foldr (op^) "" L
    

    【讨论】:

    • 进一步扩展,fun myconcat L = foldr (fn (s1, result) => s1 ^ result) "" L
    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2014-04-05
    • 2020-09-20
    相关资源
    最近更新 更多