小编mis*_*tor的帖子

泛型和约束多态与子类型

在关于Haskell类型类的PDF演示文稿中,幻灯片#54有这样一个问题:

公开问题:

在具有泛型和受约束的多态性的语言中,您是否也需要子类型?

我的问题是:

  1. 泛型和约束多态如何使子类型不必要?

  2. 如果泛型和约束多态不需要子类型,为什么Scala有子类型?

oop haskell programming-languages functional-programming scala

18
推荐指数
4
解决办法
1087
查看次数

使用PDFBox从PDF文档中读取特定页面

如何使用PDFBox从PDF文档中读取特定页面(给定页码)?

java pdf pdfbox

18
推荐指数
2
解决办法
5万
查看次数

Haskell中的空间泄漏

我已多次读过Haskell中的懒惰评估有时会导致空间泄漏.什么样的代码会导致空间泄漏?如何检测它们?并且程序员可以采取哪些预防措施来避免它们?

haskell functional-programming lazy-evaluation space-leak

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

'Alternative'类型类中的'some'和'many'函数

哪些功能somemanyAlternative类型类有用吗?Docs提供了一个我无法理解的递归定义.

haskell functional-programming typeclass

17
推荐指数
2
解决办法
2220
查看次数

为什么Scala的分号推断在这里失败?

在使用Scala 2.7.3编译以下代码时,

package spoj

object Prime1 {
  def main(args: Array[String]) {
    def isPrime(n: Int) = (n != 1) && (2 to n/2 forall (n % _ != 0))
    val read = new java.util.Scanner(System.in)
    var nTests = read nextInt // [*]
    while(nTests > 0) {
      val (start, end) = (read nextInt, read nextInt)
      start to end filter(isPrime(_)) foreach println
      println
      nTests -= 1
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下编译时错误:

PRIME1.scala:8: error: illegal start of simple expression
    while(nTests > 0) {
    ^
PRIME1.scala:14: error: …
Run Code Online (Sandbox Code Playgroud)

scala

16
推荐指数
3
解决办法
2611
查看次数

在Clojure的情况下,"整个语言是否始终可用"?

保罗格雷厄姆的第四个要点是什么使Lisp不同说,

9.整个语言随时可用.

读取时间,编译时和运行时之间没有真正的区别.您可以在编译时编译或运行代码,同时在运行时读取或编译代码.

在读取时运行代码允许用户重新编程Lisp的语法; 在编译时运行代码是宏的基础; 在运行时编译是Lisp在Emacs等程序中用作扩展语言的基础; 并且在运行时读取使程序能够使用s表达式进行通信,这一想法最近被重新发明为XML.

Clojure的最后一个要点是否适用?

lisp programming-languages clojure common-lisp

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

当关键字'implicit'放在lambda表达式参数前面时,它意味着什么?

我以前见过这种代码很多次,最近一次是在scala-user邮件列表中:

context(GUI) { implicit ec =>
  // some code
}
Run Code Online (Sandbox Code Playgroud)

context 定义为:

def context[T](ec: ExecutionContext)(block: ExecutionContext => T): Unit = { 
  ec execute { 
    block(ec) 
  } 
}
Run Code Online (Sandbox Code Playgroud)

implicit当keeyword 置于lambda表达式参数前面时,它的目的是什么?

scala implicit

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

从Play JSON API获取更好的错误消息

Play JSON API生成的错误消息的示例:

scala> import play.api.libs.json._
import play.api.libs.json._

scala> Json.obj("k" -> Json.obj("m" -> 7))
res0: play.api.libs.json.JsObject = {"k":{"m":7}}

scala> (res0 \ "p").as[String]
play.api.libs.json.JsResultException: JsResultException(errors:List((,List(ValidationError(validate.error.expected.jsstring,WrappedArray())))))
    at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67)
    at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67)
    at play.api.libs.json.JsResult$class.fold(JsResult.scala:69)
    at play.api.libs.json.JsError.fold(JsResult.scala:10)
    at play.api.libs.json.JsValue$class.as(JsValue.scala:65)
    at play.api.libs.json.JsUndefined.as(JsValue.scala:98)
    at .<init>(<console>:12)
    at .<clinit>(<console>)
    at .<init>(<console>:7)
    // gazillion lines more

scala> (res0 \ "k" \ "m").as[String]
play.api.libs.json.JsResultException: JsResultException(errors:List((,List(ValidationError(validate.error.expected.jsstring,WrappedArray())))))
    at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67)
    at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67)
    at play.api.libs.json.JsResult$class.fold(JsResult.scala:69)
    at play.api.libs.json.JsError.fold(JsResult.scala:10)
    at play.api.libs.json.JsValue$class.as(JsValue.scala:65)
    at play.api.libs.json.JsNumber.as(JsValue.scala:108)
    at .<init>(<console>:12)
    at .<clinit>(<console>)
    at .<init>(<console>:7)
    // gazillion lines more
Run Code Online (Sandbox Code Playgroud)

有没有办法从这个API中获得更好的错误消息?例如,对于上述两种情况中的错误消息可能看起来像No value found …

json scala playframework-2.0

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

在Erlang中使用非短路布尔运算符有什么用?

我正在从LearnYouSomeErlang网络书籍学习Erlang.在学习的过程中,有一件事让我印象深刻的是非短路布尔连接和分离算子即可; andor.这些运营商有哪些用例?你为什么要用它们而不是andalsoorelse

erlang programming-languages functional-programming logic-programming

14
推荐指数
2
解决办法
349
查看次数

如何将Kleisli合成与返回Validations的函数一起使用?

如何组合返回Validations的两个函数?以下是我的尝试不起作用:

scala> def f: Int => Validation[String, Int] = i => if(i % 2 == 0) Success(i * 2) else Failure("Odd!")
f: Int => scalaz.Validation[String,Int]

scala> def g: Int => Validation[String, Int] = i => if(i > 0) Success(i + 1) else Failure("Not positive!")
g: Int => scalaz.Validation[String,Int]

scala> kleisli(f) >=> kleisli(g)
<console>:16: error: no type parameters for method kleisli: (f: A => M[B])scalaz.Kleisli[M,A,B] exist so that it can be applied to arguments (Int => scalaz.Validation[String,Int])
 --- because ---
argument …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala scalaz

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