【问题标题】:SML higher order function type? [duplicate]SML 高阶函数类型? [复制]
【发布时间】:2013-01-16 01:00:42
【问题描述】:

我正在尝试实现一个功能

 ziprev : 'a list -> 'b list -> ('a * 'b)list
 - ziprev [1,2,3,4] [10,20,30,40];
 val it = [(1,40),(2,30),(3,20),(4,10)] : (int * int) list

使用 zipWith 和库中的 List.rev。

我对函数是什么感到困惑。尝试:

fun ziprev xs ys = List.zipWith(List.rev(fn(a,b) => (a,b)::[]),xs,ys);

运算符:'Z 列表操作数:'Y * 'X -> ('Y * 'X) 列表

【问题讨论】:

  • 您的zip 实施使用zipWith 工作了吗?从那里开始下一步应该很容易。

标签: list functional-programming reverse sml higher-order-functions


【解决方案1】:

SML 基础库中没有List.zipWith,所以我不知道你从哪里得到的;而 List.rev 不将函数作为参数,而是将列表作为参数

- rev;
val it = fn : 'a list -> 'a list

我猜你想要完成的是ListPair.zip 中的某些内容

- fun ziprev xs ys = ListPair.zip(xs, rev ys);
val ziprev = fn : 'a list -> 'b list -> ('a * 'b) list

- ziprev [1,2,3,4] [10,20,30,40];
val it = [(1,40),(2,30),(3,20),(4,10)] : (int * int) list

【讨论】:

  • fun zipWith f (x::xs) (y::ys) = (f x y) :: (zipWith f xs ys) | zipWith _ _ _ = [];还是谢谢
猜你喜欢
  • 1970-01-01
  • 2013-01-13
  • 2013-03-20
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 2020-02-16
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多