haskell 代码可以在 leksah 上编译,但不能在 ghc 上编译

Posted

技术标签:

【中文标题】haskell 代码可以在 leksah 上编译,但不能在 ghc 上编译【英文标题】:haskell code compiles on leksah but not ghc 【发布时间】:2014-05-09 00:13:31 【问题描述】:

正如问题所述,我有一些在 leksah 中编译但不使用 ghc --make filename.hs 编译

代码:

module Main (
    main
) where

pair a b = (Pair (a, b))

newtype Pair a b = Pair (a,b)  deriving (Eq,Show)

instance (Num a,Num b) => Num (Pair a b) where
   Pair (a,b) + Pair (c,d) = Pair (a+c,b+d)
   Pair (a,b) * Pair (c,d) = Pair (a*c,b*d)
   Pair (a,b) - Pair (c,d) = Pair (a-c,b-d)
   abs    (Pair (a,b)) = Pair (abs a,    abs b) 
   signum (Pair (a,b)) = Pair (signum a, signum b) 
   fromInteger i = Pair (fromInteger i, fromInteger i)

main = do   
            a <- return (pair 1 3)   
            print a
            print "haha"  
            print 3.2  
            print [3,4,3]  

我需要调用一个选项以使其与ghc --make 一起运行吗?

免责声明:pair newtype 不是我制作的。

编辑:

当使用ghc --make Bignumber.hs(Bignumber.hs 是文件名)时,输出是

[1 of 1] Compiling Main             ( BigNumber.hs, BigNumber.o )

BigNumber.hs:20:13: parse error on input `print'

【问题讨论】:

这似乎对我有用。您遇到的具体问题是什么? @DavidYoung 我收到以下消息 'BigNumber.hs:21:13: parse error on input `print'' 【参考方案1】:

检查您的缩进:也许您正在以 ghc 与 leksah 不同的方式解释制表符和空格?我没有在 print 看到解析错误的其他解释。

【讨论】:

do 中的每一行都应缩进完全相同(例如,一个制表符或四个空格)。 谢谢,这是我的问题。 只是为了非常清楚:Haskell 中的一个选项卡被视为移动到下一个 八个 个空格的倍数,而不是四个。

以上是关于haskell 代码可以在 leksah 上编译,但不能在 ghc 上编译的主要内容,如果未能解决你的问题,请参考以下文章

在mac上编译C++11代码?

C++/LapackE 代码在 Windows 上编译良好,但相同的代码在 Linux 上编译失败

VRPN C++ 代码可在 Linux 上编译,但不能在 Windows 上编译

在 Windows 上编译 Vala 源代码

我可以在打开的工作簿上编译 VBA 吗?

windows上编译linux程序代码需要用到的头文件