Haskell语言问题,请懂Haskell的高手帮帮忙!!![题目在补充说明]

2025-05-18 03:54:42
推荐回答(3个)
回答1:

好吧,如果用最基本的(x:xs),我来回答好了:
因为是编程,我觉得你应该自己多想想,所以我不会把主程序都写给你,我只是给你一些提示,希望有帮助吧。

1、第一个,如果一个数组要变成两倍的话,也就是说[a,a,b,b,c,c],所以里面的基本元素应该都要重复一次,本来(x:xs)是不变的但如果x提取两次的话,那么就是递归两次了。

2、第二个,有两种方法,a、把第一个,第二个和第三个数组分别判断,如果是第二个的话,就删去,如果删去,又回到递归(x:xs),如果不提取x的话,应当是怎样的结果?
b、把第一组和第二组应用到(x:xs)递归,直接定义删去第二组,只递归第一组。。。。。。。。
就提示到这里了,加油吧!

回答2:

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)]

回答3:

lz这种学习方式态度不合理。