最佳答案
如何在 GHCi 中定义这个函数的等价物(取自 学会了) ?
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