我该如何在 GHCi 中定义这个函数的等价函数(取自learnyouahaskell)?
import Data.List
numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub
如果没有类型声明,GHCi会接受函数定义,但最终得到的类型并不明确:
Prelude Data.List> import Data.List
Prelude Data.List> let numUniques' = length . nub
Prelude Data.List> :t numUniques'
numUniques' :: [()] -> Int
生成的函数只接受单位列表作为参数。
在 GHCi 中是否有一种提供类型声明的方式?或者是否有另一种定义这些函数的方式,不需要类型声明?
我在 GHCi 指南中没有看到明显的线索,并尝试了以下类似的表达式(但均无效):
> let numUniques' = ((length . nub) :: (Eq a) => [a] -> Int)
> :t numUniques'
numUniques' :: [()] -> Int
-XNoMonomorphismRestriction
:https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#monomorphism - N. Shead