【发布时间】:2021-12-24 09:15:40
【问题描述】:
因此,我正在尝试创建一个高阶 SML 函数,该函数接受一个数字并返回所有函数并返回其因子。我已经完成了一些问题,我会获取一个值列表并返回可整除的值,但我从来没有做过任何事情,比如取一个数字并从中列出一个列表。跟随问题:
定义一个函数
factorize = fn: int -> int list,它接受一个整数并在一个列表中返回它的所有因子。例如,factorize 12将返回[1, 2, 3, 4, 6, 12]。
第二个比较棘手,我不明白它是怎么做到的,所以把它放在这里。如果我能在这方面获得任何帮助,我将不胜感激。
定义一个函数
cfoldl,其行为与标准foldl完全相同,只是函数参数的类型不采用2元组',输入函数应使用柯里化符号’a -> ’b -> ’b.因此,cfoldl的类型应该是fn : (’a -> b -> ’b) -> ’b -> ’a list -> ’b。例如,cfoldl (fn a => fn b => a-b) 1 [1,2,3,4];将返回3。
我为foldl制作了这个:
fun cfoldl f b [] = b
| cfoldl f b (x::xs) = cfoldl f (f (x, b)) xs;
谢谢!
【问题讨论】:
-
您可能会发现编写函数
curry很有用。例如,使用fun curry f a b = f (a, b),您可以编写curry op+,并获得加法运算符的柯里化版本。
标签: sml higher-order-functions