gat*_*ado 9 haskell typing ghc ghci
在回答有关stackoverflow的问题时,我注意到GHCi(交互式)在let语句中分配了一个限制性太强的类型.即,给定代码,
import Control.Arrow
f = maximum &&& id >>> fst &&& (\(m,l) -> length $ filter (==m) l)
Run Code Online (Sandbox Code Playgroud)
(作为我的回答对/sf/ask/439726941/#6283594),如果一次性插入"让"之前f和在ghci中输入它,它提供以下类型信息
Prelude Control.Arrow> :t f
f :: [()] -> ((), Int)
Run Code Online (Sandbox Code Playgroud)
而只是要求表达式的类型给出正确的结果,即Ord a => [a] -> (a, Int).我正在使用ghc 7.0.3.
C. *_*ann 10
请参阅GHCi中使用的扩展默认规则,以解释其()来源.
至于为什么在这种情况下发生违约,请比较以下内容:
> let f x = maximum &&& id >>> fst &&& (\(m,l) -> length $ filter (==m) l) $ x
> :t f
f :: (Ord a) => [a] -> (a, Int)
Run Code Online (Sandbox Code Playgroud)
我认为这与单态的绑定有关,但我不确定细节.
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |