在标准ML中使用乘法和迭代的幂函数

  • 本文关键字:迭代 函数 ML 标准 sml ml
  • 更新时间 :
  • 英文 :


我很难理解在SML中只使用迭代和乘法来实现幂函数的方法。

我的迭代如下:

fun iterate 0 f x = x
| iterate n f x = iterate (n-1) f (f x);

而我的乘法基本上是递归迭代

fun multiply 0 f = 0
| multiply f x = iterate x (fn x => x + 1) (multiply x (f-1));

幂函数基本上是相同基数的乘积的迭代,但我不知道应该递减的哪个值

power n f = iterate (mult n n) (fn x => x + 1) (power (n) (f-1))

这绝对是错误的

power n f = iterate (mult n n) (fn x => x + 1) (power (n) (f-1))

所以,当涉及到命名时,我可能肯定会写power x ypower i jpower x n或诸如此类的东西,因为xyijn看起来像是数字或整数,而f看起来像是一个函数。所以你马上就有了:

fun power x y = iterate (...a...) (...b...) (...c...)

至于这三个部分的内容。。。a…,…b…和。。。c.…:

a。iterate调用n,这是迭代的次数。

b。iterate调用f,这是每次应用的函数。

c。iterate调用x,这就是每次应用的内容。

正如《如何在SML中仅使用加法函数和迭代函数来生成乘法函数》中所阐述的那样,使power调用本身毫无意义;使用CCD_ 17的目的是将递归交给这个列表组合子,而不是使用显式递归(其中CCD_。

最新更新