在参数列表中描述函数

Describing a function in a list of parameters

我有这样的函数描述:

-spec match_evaluator(ReplaceFun, Text, Regex) -> Result
   when ReplaceFun :: function(),
        Text :: string(),
        Regex :: string(),
        Result :: string().

match_evaluator(ReplaceFun, Text, Regex) ->

我想对参数ReplaceFun的参数进行更详细的说明。 ReplaceFun 是函数的 link。

类似的东西:

-type replace_fun(string(),[string()]) :: {string(), non_neg_integer()}.
% : bad type variable

我想正确定义这个类型(一个有两个参数和 return 类型的函数)。请告诉我如何正确描述这个函数的类型。

例如,您可以编写 fun((string(), string()) -> string()) 来引用一个接受两个字符串和 return 一个字符串的函数。如果您不关心参数或 return 类型是什么,请在它们的位置使用 any()。我推荐 Erlang documentation 的讲座以获得更多选择。

有一个-spec的函数match_evaluator:

-spec match_evaluator1(ReplaceFun, Text, Regex) -> Result
   when ReplaceFun :: fun((FullString :: string(), MatchResult :: [string()]) -> 
        (NewString :: string())),
        Text :: string(),
        Regex :: string(),
        Result :: string().

match_evaluator1(ReplaceFun, Text, Regex) ->
%..

@radrow, reference_manual 和 Erlang 标准库 socket_test_evaluator.erl 的源代码(我在文件夹 erlang/otp/erts/emulator/test 中找到)提示了我解决方案的想法。

该函数的源代码为here