在评估表达式的类型时,是否可以指示 ghci 使用具体类型作为约束?
Is is possible to instruct ghci to use a concrete type for a constraint when evaluating the type of an expression?
我可以用ghci来判断fmap
的类型:
Prelude> :t fmap
fmap :: Functor f => (a -> b) -> f a -> f b
有什么方法可以指示 ghci 将 f
绑定到 Functor
的特定实例并打印出生成的类型签名。即对于 []
它将打印
(a -> b) -> [a] -> [b]
如果不是,有什么技巧或迂回的方法可以达到同样的目的吗?这对于派生更复杂的表达式和仿函数(例如 (->) a
)的类型签名特别方便。
最简单的方法是
Prelude> :set -XTypeApplications
Prelude> :t fmap @[]
fmap @[] :: (a -> b) -> [a] -> [b]
我可以用ghci来判断fmap
的类型:
Prelude> :t fmap
fmap :: Functor f => (a -> b) -> f a -> f b
有什么方法可以指示 ghci 将 f
绑定到 Functor
的特定实例并打印出生成的类型签名。即对于 []
它将打印
(a -> b) -> [a] -> [b]
如果不是,有什么技巧或迂回的方法可以达到同样的目的吗?这对于派生更复杂的表达式和仿函数(例如 (->) a
)的类型签名特别方便。
最简单的方法是
Prelude> :set -XTypeApplications
Prelude> :t fmap @[]
fmap @[] :: (a -> b) -> [a] -> [b]