相关疑难解决方法(0)

如何使用更高级别的类型

玩教堂的数字.我遇到的情况是我无法引导GHC类型检查器绕更高阶类型.

首先我写了一个没有任何类型签名的版本:

module ChurchStripped where

zero z _ = z
inc n z s = s (n z s)
natInteger n = n 0 (1+)

add a b = a b inc

{-
*ChurchStripped> natInteger $ add (inc $ inc zero) (inc $ inc $ inc zero)
5
-}

mult a b = a zero (add b)

{-
*ChurchStripped> natInteger $ mult (inc $ inc zero) (inc $ inc $ inc zero)
6
-}
Run Code Online (Sandbox Code Playgroud)

推断类型mult是可怕的,所以我试图用类型定义清理类型:

module Church where …
Run Code Online (Sandbox Code Playgroud)

haskell

9
推荐指数
2
解决办法
273
查看次数

标签 统计

haskell ×1