小编Gih*_*ung的帖子

在Haskell中,两个函数看似相等但有所不同

我正在尝试在Haskell中实现不带Prelude的布尔值。

对表达式beq true true "TRUE" "FALSE"进行评估后,就可以了。但是,当我尝试评估时beq' true true "TRUE" "FALSE",由于预期类型和实际类型之间的某些差异而导致失败。

这是代码。

import qualified Prelude as P

i = \x -> x
k = \x y -> x
ki = k i

true = k
false = ki

not = \p -> p false true
beq = \p q -> p (q true false) (q false true)
beq' = \p q -> p q (not q)
Run Code Online (Sandbox Code Playgroud)

因此,我检查了推论的推断类型。

*Main> :type beq
beq
  :: (t1 -> t1 -> t2) …
Run Code Online (Sandbox Code Playgroud)

haskell type-inference lambda-calculus

4
推荐指数
1
解决办法
92
查看次数

标签 统计

haskell ×1

lambda-calculus ×1

type-inference ×1