在研究Haskell时,我遇到了这个函数,它将两个列表连接起来形成一个列表。此函数工作正常:
attach :: [Int] -> [Int] -> [Int] attach [] l = l attach (x:xs) l = x:(attach xs l)
但是在第三行,当我把x:移到另一边时,它不工作,这是为什么呢?
x:
attach :: [Int] -> [Int] -> [Int] attach [] l = l attach (x:xs) l = (attach xs l):x
ryevplcw1#
如果attach要返回一个列表,那么你就尝试使用:,将列表作为左手参数,将项作为右边的参数。这与:的类型签名相反。
attach
:
Prelude> :t (:) (:) :: a -> [a] -> [a]
1条答案
按热度按时间ryevplcw1#
如果
attach
要返回一个列表,那么你就尝试使用:
,将列表作为左手参数,将项作为右边的参数。这与
:
的类型签名相反。