haskell 递归列表联接函数类型错误

vyu0f0g1  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(117)

在研究Haskell时,我遇到了这个函数,它将两个列表连接起来形成一个列表。
此函数工作正常:

attach :: [Int] -> [Int] -> [Int]
attach [] l = l
attach (x:xs) l = x:(attach xs l)

但是在第三行,当我把x:移到另一边时,它不工作,这是为什么呢?

attach :: [Int] -> [Int] -> [Int]
attach [] l = l
attach (x:xs) l = (attach xs l):x
ryevplcw

ryevplcw1#

如果attach要返回一个列表,那么你就尝试使用:,将列表作为左手参数,将项作为右边的参数。
这与:的类型签名相反。

Prelude> :t (:)
(:) :: a -> [a] -> [a]

相关问题