好吧,如果用最基本的(x:xs),我来回答好了:
因为是编程,我觉得你应该自己多想想,所以我不会把主程序都写给你,我只是给你一些提示,希望有帮助吧。
1、第一个,如果一个数组要变成两倍的话,也就是说[a,a,b,b,c,c],所以里面的基本元素应该都要重复一次,本来(x:xs)是不变的但如果x提取两次的话,那么就是递归两次了。
2、第二个,有两种方法,a、把第一个,第二个和第三个数组分别判断,如果是第二个的话,就删去,如果删去,又回到递归(x:xs),如果不提取x的话,应当是怎样的结果?
b、把第一组和第二组应用到(x:xs)递归,直接定义删去第二组,只递归第一组。。。。。。。。
就提示到这里了,加油吧!
faint ,不好好上课的。
module Main where
fn1 :: (a,b,c) -> [(a,b,c)]
fn1 (a,b,c) = [(a,b,c), (a,b,c)]
fn2 :: [(a,b,c)] -> [(a,b,c)]
fn2 xs = [head xs, last xs]
main :: IO()
main = do
print $ fn1 (1,2,3)
print $ fn2 [(1,2,3), (4,5,6), (7,8,9)]
lz这种学习方式态度不合理。