如果我们知道kl-1= fl对所有int-> int类型的函数f和int类型的l成立,我们是否可以确定函数“ k”?

问题描述

假设k和f都是int-> int类型的函数。如果我们知道k(l-1)= f(l)对于所有int类型的l成立,我们是否可以确定k是函数v-> f(v + 1)?

在进行函数式编程时,我有一个问题:转换长度函数

let rec len xs = 
  match xs with 
    | [] -> 0 
    | x:xr -> 1 + len xr;;

到连续通过版本。我对练习的回答是

   let rec lenc xs k = 
      match xs with 
        | [] -> k 0 
        | x:xr -> lenc xr (fun v -> k(v+1))

但是我不确定(fun v -> k(v+1))部分是否可以用其他解决方案代替。要知道这一点,我们需要确定一个唯一的“ k”,因为k(l-1)= f(l)对于所有int-> int类型的函数f和int类型的l都成立?

解决方法

您要数学证明吗?

(1) k(i - 1) = f(i)

(2) j = i - 1

来自(1)和(2):

(3) k(j) = f(i)

来自(2):

(4) i = j + 1

来自(3)和(4)

(5) k(j) = f(j + 1)

q.e.d。

当然(fun v -> k(v+1))是您的k,内部kf

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...