gpt4 book ai didi

sml - ml 中的匿名函数

转载 作者:行者123 更新时间:2023-12-04 19:51:33 25 4
gpt4 key购买 nike

我必须编写一个匿名函数,它接受一个整数列表和两个函数 f 和 g。该函数将 f 应用于列表中的偶数 int,并将 g 应用于奇数 int。最后,函数返回所有计算值的总和。f(x)=2x,g(x)=x*x

我的代码是

val f = fn x => 2 * x;
val g = fn x => x * x;

fun s [] f g = []
| s L f g =
let
val n = hd(L) mod 2;
in
fn n => case n of
0 => f(hd(L)) + s tl(L) f g
| x => g(hd(L)) + s tl(L) f g
end;

怎么了??

最佳答案

首先,您应该将 tl(L) 括起来,以便正确解析 s (tl(L)) f g 的调用。其次,函数的返回类型是 int 所以基本情况 [] 应该返回 0 而归纳情况不应该有 fn n =>(因为 n 已经由 val 定义)。

我使用模式匹配而不是 hdtl 重构函数,并将经常变化的参数放在最后一个:

fun sum f g [] = 0
| sum f g (x::xs) =
let
val n = x mod 2
in
case n of
0 => f x + sum f g xs
| _ => g x + sum f g xs
end;

关于sml - ml 中的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12959642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com