gpt4 book ai didi

haskell - GHCi 7.8.2 不使用文件中的语言扩展名

转载 作者:行者123 更新时间:2023-12-02 02:43:16 26 4
gpt4 key购买 nike

这是一些需要 -XRebindableSyntax 的简单代码.

{-# LANGUAGE RebindableSyntax, NoImplicitPrelude #-}

import NumericPrelude
import qualified Algebra.Additive (C)
import qualified Algebra.Ring (C)

newtype Foo = Foo Int deriving (Show)

instance Algebra.Additive.C Foo where
(Foo x) + (Foo y) = Foo (x+y)

instance Algebra.Ring.C Foo where
fromInteger = Foo . fromInteger

f :: Foo -> Foo -> Foo
f x y = x + y

g = f 3 5

这是我的 GHCi 成绩单:
> ghci Foo.hs
GHCi, version 7.8.2
...
*Main> g
Foo 8
*Main> f 3 5

<interactive>:3:3:
No instance for (GHC.Num.Num Foo) arising from the literal ‘3’
In the first argument of ‘f’, namely ‘3’
In the expression: f 3 5
In an equation for ‘it’: it = f 3 5

*Main> :set -XRebindableSyntax
*Main> f 3 5
Foo 8

我有 95% 的把握,当我在 GHCi 7.8 之前加载带有扩展名的文件时,我不必在 GHCi 中重置该扩展名。这是在某处记录的,还是一个错误?是否有一个简单的解决方法(例如,告诉 GHCi 总是使用 -XRebindableSyntax ,我通常需要它?)

最佳答案

Is there an easy workaround (for example, telling GHCi to always use -XRebindableSyntax, which I will usually need?)



你可以放一个 .ghci文件与源文件位于同一目录中。现在,如果您从该目录启动 ghci, .ghci文件将被加载并执行其内容,就像您在 ghci 提示符下键入的命令一样。在这种情况下,您可以输入 :set -XRebindableSyntax在那里。

我觉得这比放 :set -XRebindableSyntax要好进 .ghci在您的主目录中,因为您可能在其他目录中还有其他需要不同扩展名的 Haskell 项目。

有关将什么放入特定于项目的 ghci 文件的更多想法,请参阅 Neil Mitchell's blog post .

关于haskell - GHCi 7.8.2 不使用文件中的语言扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23667989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com