2012-09-18 71 views
0

这是curried函数,仅检查前两个列表元素。ML中的递归函数

fun inn list f = f(hd(list), hd(tl(list))); 

我想知道的是我可以通过其余列表元素的任何方式。 我不知道如何让它递归。 任何人都可以帮助我吗?

回答

3

的第一句话:从未使用hdtl。改用模式匹配。

我现在不正是你想要你的函数做的,但这里是一个遍历一个列表,并应用于F到每一个元素:

fun iter f l = 
    case l of 
    [] =>() 
    | x::xs => (f x; iter f xs) 

可以更简明地写为

fun iter f [] =() 
    | iter f (x::xs) = (f x; iter f xs) 

值得一提的是,这个功能在名为List.app的标准基础库中可用。