小编bas*_*ode的帖子

为什么Num可以表现为小数?

如预期的那样,可以正常工作:

valFrac :: Fractional a => a
valFrac = undefined

fNum :: Num a => a -> a
fNum a = undefined

resFrac :: Fractional a => a
resFrac = fNum valFrac -- Works as expected because every
                       -- Fractional is also a Num.
                       -- So as expected, we can pass
                       -- a Fractional argument into
                       -- a Num parameter.
Run Code Online (Sandbox Code Playgroud)

另一方面,以下方法也适用。我不明白为什么。

fFrac :: Fractional a => a -> a
fFrac a = undefined

valNum :: Num a => a
valNum …
Run Code Online (Sandbox Code Playgroud)

haskell

3
推荐指数
2
解决办法
164
查看次数

为什么`succ i`在`i :: Num a => a`(而不是`Enum a`)的地方有效?

这似乎适用于GHCi和GHC。我将首先以GHCi为例。

给定i类型已推断如下:

Prelude> i = 1
Prelude> :t i
i :: Num p => p
Run Code Online (Sandbox Code Playgroud)

鉴于这succ是在上定义的函数Enum

Prelude> :i Enum
class Enum a where
  succ :: a -> a
  pred :: a -> a
  -- …OMITTED…
Run Code Online (Sandbox Code Playgroud)

Num不是以下内容的“子类”(如果可以使用该术语)Enum

class Num a where
  (+) :: a -> a -> a
  (-) :: a -> a -> a
-- …OMITTED…
Run Code Online (Sandbox Code Playgroud)

为什么succ i不返回错误?

Prelude> succ i
2 -- works, no error
Run Code Online (Sandbox Code Playgroud)

我希望:type …

haskell types typeclass ghci

3
推荐指数
1
解决办法
125
查看次数

我们可以在ghci中有一个简短的信息输出吗?

有没有理由为什么:infoghci 的输出在它所属的每个类之后列出类型名称?例如

Prelude> :info Int` 
Run Code Online (Sandbox Code Playgroud)

版画

...
instance Bounded Int -- Defined in `GHC.Enum'
instance Enum Int -- Defined in `GHC.Enum'
instance Eq Int -- Defined in `GHC.Classes*emphasized text*'
...
Run Code Online (Sandbox Code Playgroud)

我更喜欢读的是:

Prelude> :info Int
...
instance Bounded -- Defined in `GHC.Enum'
instance Enum -- Defined in `GHC.Enum'
instance Eq -- Defined in `GHC.Classes*emphasized text*'
...
Run Code Online (Sandbox Code Playgroud)

甚至更好的是简短的表示法

Prelude> :info Int
...
instance of Bounded, Enum, Eq,...
Run Code Online (Sandbox Code Playgroud)

haskell ghci

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

如何防止 Maven Surefire 插件运行测试套件的成员两次?

鉴于以下 JUnit 测试,surefire 将运行TestA两次TestB。第一次是单独测试,第二次是作为测试套件的一部分。这似乎是一种不受欢迎的行为。事实上,流行的 IDE(例如 IntelliJ)只会作为测试套件的一部分运行一次测试。

这是一个错误吗?有没有办法配置 Surefire-plugin 使其仅作为测试套件的一部分运行?

GitHub上提供示例项目

@RunWith(Suite.class)
@Suite.SuiteClasses({TestA.class, TestB.class})
public class TestSuite
{}

public class TestA {
    @Test
    public void test() {
        System.out.println("=== RUN " + this.getClass());
    }
}

public class TestB {
    @Test
    public void test() {
        System.out.println("=== RUN " + this.getClass());
    }
}
Run Code Online (Sandbox Code Playgroud)

junit unit-testing junit4 maven-surefire-plugin

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