有谁知道Haskell 中的列表到底是如何定义的? ==我尝试过 Hoogling 它,但似乎找不到Eq [a]定义实例的位置。
的 GHC 实现Eq和其他内置实例是用GHC.Classes. 具体来说,您正在寻找Eq [a]
Run Code Online (Sandbox Code Playgroud)instance (Eq a) => Eq [a] where {-# SPECIALISE instance Eq [[Char]] #-} {-# SPECIALISE instance Eq [Char] #-} {-# SPECIALISE instance Eq [Int] #-} [] == [] = True (x:xs) == (y:ys) = x == y && xs == ys _xs == _ys = False
没什么超级令人兴奋的。两个空列表相等,如果头尾相等,两个非空列表相等。最后,两个任意列表不相等。唯一有趣的部分是专门化指令,它应该对整数列表、字符串和字符串列表进行单态相等检查。