如何计算 (> 0) 的类型?

F. *_*Zer 1 haskell types

每当我有一个运算符部分,其左参数部分应用时,即:

(0 >)
Run Code Online (Sandbox Code Playgroud)

我只是简单地将运算符重写为前缀形式并继续计算:

(>) 0
Run Code Online (Sandbox Code Playgroud)

如何计算部分应用了正确参数的运算符部分的类型?

che*_*ner 6

对于(>),这并不重要,因为两个参数具有相同的类型。Ord a => a从 中删除其中一个Ord a => a -> a -> Bool,就剩下Ord a => a -> Bool

一般来说,您只需删除与所应用的参数对应的类型即可例如,给定(??) :: Int -> Char -> Bool

-- with the Int argument supplied, you still need a Char
(x ??) == (\y -> x ?? y) :: Char -> Bool
-- with the Char argument supplied, you still need an Int
(?? y) == (\x -> x ?? y) :: Int -> Bool
Run Code Online (Sandbox Code Playgroud)