【发布时间】:2021-05-10 05:53:23
【问题描述】:
我能够统一以下术语:
foo :: (a -> b -> c) -> a -> b -> c
bar :: (a' -> b') -> a' -> b'
foo bar
a ~ (a' -> b')
b ~ a'
c ~ b'
(a' -> b') -> a' -> b'
但我无法为以下统一应用正确的规则,因为 foo 需要一个三元函数,但 bar 只有两个参数:
foo :: (a -> b -> c -> d) -> a -> b -> c -> d
bar :: (a' -> b') -> a' -> b'
foo bar
-- ...?
(a' -> c -> d) -> a' -> c -> d
推断的类型来自 GHCI。我怎么去那里?
【问题讨论】:
标签: haskell functional-programming substitution unification hindley-milner