【问题标题】:Parse error as I write a church number using Haskell当我使用 Haskell 写一个教堂号码时解析错误
【发布时间】:2014-04-14 04:43:01
【问题描述】:

这里是输出教会号码的源代码。在我编译时,出现错误信息:

解析错误(可能是不正确的缩进或不匹配的括号)

我不知道。任何人都可以帮忙吗?谢谢

module Main where

type Church a = (a -> a) -> a -> a

church :: Integer -> Church Integer
church 0 = \f -> \x -> x
church n = \f -> \x -> f (church (n-1) f x)

let r = church 0  
main = print (r)

【问题讨论】:

    标签: haskell


    【解决方案1】:

    let 用于表达式和do 表示法;要在模块级别定义绑定,请删除 let:

    r = church 0  
    main = print r
    

    不过,即使在此更改之后,您也会收到错误消息,因为 r 的类型为 Church Integer,也就是 (Integer -> Integer) -> Integer -> Integer,这是一个函数。不幸的是,函数不是showable,因此也不是printable。如果你想在里面显示数字,你可以使用

    r = church 0  
    main = print (r succ 0)
    

    【讨论】:

    • 发生其他错误:没有使用print' Possible fix: add an instance declaration for (Show (Church Integer)) In the expression: print r In an equation for main'引起的(Show(Church Integer))实例:main = print r
    • 非常感谢。成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多