Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
441 views
in Technique[技术] by (71.8m points)

SML functional programming higher order function?

I need to implement a function

 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

Using a function that I already created:

- zipW (fn (x, y) => x + y) [1,2,3,4] [10,20,30,40];
val it = [11,22,33,44] : int list

and the List.rev from the library. I have no idea how to do a function with two libraries. Any suggestions?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Hint 1:

Compare the result of your ziprev with

List.zip [1,2,3,4] [10,20,30,40]

You should see a fairly obvious pattern.

Hint 2:

List.rev reverses a list.

Hint 3:

Can you use zipW to implement List.zip?
That is, if you want to say

normalzip xs ys = zipW something xs ys

what would something be?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...