Haskell 中列表的 `==` 的源代码定义

Source code definition of `==` for lists in Haskell

有谁知道 == 是如何为 Haskell 中的列表定义的?我试过 Hoogling 它,但似乎无法找到定义实例 Eq [a] 的位置。

Eq 和其他 built-in 个实例的 GHC 实现是在 GHC.Classes. Specifically, you're looking for Eq [a]

中编写的
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

没有什么超级令人兴奋的。两个空列表相等,如果头部和尾部相等,两个非空列表也相等。最后,两个任意列表是non-equal。唯一有趣的部分是专门化指令,它应该单态化整数列表、字符串和字符串列表的相等性检查。