出于某种原因,我机器上的Haskell永远不会从任何getLine调用返回.例如,我尝试直接从Learn Your a Haskell for Great Good运行以下代码:
main = do
putStrLn "Hello, what's your name?"
name <- getLine
putStrLn ("Hey " ++ name ++ ", you rock!")
Run Code Online (Sandbox Code Playgroud)
当我运行它时,第一行被打印,当我输入一个名字时,我看到了我的输入,但是当我按下Enter键时,程序只是阻塞那里并且从不打印最后一行.
我该怎么解决这个问题?
编辑:我从Sublime IDE运行它,也许这与它有关
我有一个特征GameStatistics,它定义了一个add()方法,该方法接受一个参数并返回其自身和参数的总和。子类中的实现应该只接受它们自己类型的实例作为参数(或者也可能是子类型)。
我想使用此add方法来聚合列表GameStatistics,使用 Seq 的reduce方法。
我无法在 Scala 中定义它并使其编译。下面是我尝试过的一个示例及其编译错误。
这些错误对我来说没有任何意义。我应该如何让它发挥作用?
package bgengine
trait GameStatistics {
def equity: Double
def add[G: this.type](s: G): G
def multiply(x: Double): GameStatistics
}
object GameStatistics {
def aggregate(stats: Seq[GameStatistics]): GameStatistics = stats.reduce( _ add _ )
}
case class SimpleGameStatistics(equity: Double, nrGames: Int) extends GameStatistics {
override def add[G: SimpleGameStatistics](s: G): G =
SimpleGameStatistics((equity * nrGames + s.equity * s.nrGames) / (nrGames + s.nrGames), nrGames + s.nrGames).asInstanceOf[G] …Run Code Online (Sandbox Code Playgroud)