小编haw*_*eye的帖子

如何在Google App Engine上执行异步操作?

在Google App Engine(Java)上运行异步线程的所有方法是什么?我能想到一个 - 但我想知道所有这些/

java google-app-engine android android-asynctask

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

为什么Scheme需要应用于Y-combinator实现,但是Racket没有?

这是Racket中的Y-combinator:

#lang lazy

(define Y (?(f)((?(x)(f (x x)))(?(x)(f (x x))))))

(define Fact
  (Y (?(fact) (?(n) (if (zero? n) 1 (* n (fact (- n 1))))))))
(define Fib
  (Y (?(fib) (?(n) (if (<= n 1) n (+ (fib (- n 1)) (fib (- n 2))))))))
Run Code Online (Sandbox Code Playgroud)

这是Scheme中的Y-combinator:

(define Y
  (lambda (f)
    ((lambda (x) (x x))
     (lambda (g)
       (f (lambda args (apply (g g) args)))))))

(define fac
  (Y
    (lambda (f)
      (lambda (x)
        (if (< x 2)
            1
            (* x …
Run Code Online (Sandbox Code Playgroud)

lisp scheme y-combinator apply racket

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

Haskell TypeClass 的调度是动态的吗?

鉴于以下 Haskell 代码快照:

class Foo a where
   bar  :: a -> ...
   quux :: a -> ...
   ...
Run Code Online (Sandbox Code Playgroud)

a 的值是在运行时确定的 - 类根据这个值调度。

我假设编译器可以在编译时静态检查类型,并确保没有无效类型可以调度它。

现在,如果我们将其与 Java 中的动态调度进行比较:

interface Flippable {
  Flippable flip();
}

class Left implements Flippable {
  Right flip();
}

class Right implements Flippable {
  Left flip();
}

class Demo {
  public static void main(String args[]) {
    Flippable flippable = new Right();
    System.out.println(flippable.flip);
  }
}
Run Code Online (Sandbox Code Playgroud)

假设:

  • Haskell 可以根据返回类型以及多个参数进行调度,这使得调度与其他语言不同。

我的问题是:Haskell TypeClass 的调度是动态的吗?

static haskell dynamic typeclass dispatch

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

为什么在值构造函数中声明的类型不是Haskell中的类型?

假设我有以下值构造函数:

data Shape = Circle Float Float Float | Rectangle Float Float Float Float
Run Code Online (Sandbox Code Playgroud)

现在我可以运行:

ghci> :t Circle
Circle :: Float -> Float -> Float -> Shape
Run Code Online (Sandbox Code Playgroud)

现在我可以写一个类型声明了

surface :: Shape -> Float
Run Code Online (Sandbox Code Playgroud)

但我无法输入类型声明

surface :: Circle -> Float
Run Code Online (Sandbox Code Playgroud)

是因为 " Circle不是一种类型,Shape是"

我的问题是:为什么在值构造函数中声明的类型不是Haskell中的类型?

haskell type-declaration value-constructor

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

部分应用和柯里化的概念在 Haskell 中可以互换吗?

在一些函数式语言中,部分应用函数和柯里化函数是两个相似但不同的概念。

阅读《Learn You a Haskell for Great Good》一书,作者似乎可以互换应用这些。

【Curried 函数】 Haskell 中的每个函数官方都只带一个参数。

...

如果我们调用一个参数太少的函数,我们会得到一个部分应用的函数,这意味着一个函数的参数与我们省略的参数一样多。

我的问题是:Haskell 中部分应用和柯里化的概念可以互换吗?

haskell currying partial-application

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

如何使我的docker centos sshd无密码服务器运行?

我正在用以下命令运行我的Docker容器:

docker run -d sequenceiq/hadoop-docker:2.6.0
Run Code Online (Sandbox Code Playgroud)

Dockerfile在这里

在我的Mac上启动后,我正在运行docker ps并得到:

6bfa4f2fd3b5        sequenceiq/hadoop-docker:2.6.0   "/etc/bootstrap.sh -d"   4 minutes ago       Up 4 minutes        22/tcp, 8030-8033/tcp, 8040/tcp, 8042/tcp, 8088/tcp, 49707/tcp, 50010/tcp, 50020/tcp, 50070/tcp, 50075/tcp, 50090/tcp   kind_hawking
Run Code Online (Sandbox Code Playgroud)

那我就跑

ssh -v localhost -p 22
Run Code Online (Sandbox Code Playgroud)

而我得到

OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /Users/User/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to localhost [::1] port 22.
debug1: connect to address ::1 port 22: Connection refused
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: connect to …
Run Code Online (Sandbox Code Playgroud)

ssh centos sshd docker

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

为什么我不能在Scala中减少(+)seq的整数?

我想要得到的总和seqIntegerS IN斯卡拉.

在我看来,我想在这样的整数上加一个加号:

val seqOfIntegers:Seq[Int] = Seq(1, 2, 3, 4, 5)
val sumOfIntegers = seqOfIntegers.reduce(+)
Run Code Online (Sandbox Code Playgroud)

这是无效的.

相反,我必须这样做:

val sumOfIntegers = seqOfIntegers.reduce(plus)
...
def plus(a:Integer, b:Integer): Integer = { a + b}
Run Code Online (Sandbox Code Playgroud)

(我相信你可以加油 - 但我的观点是原始的加号不起作用,错误信息也不清楚原因.)

我的问题是:为什么我不能在Scala中减少(+)seq的整数?

reduce scala infix-operator

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

如何基于嵌套值合并对?

鉴于 Clojure 中的以下列表:

(def pairs '[(2,1),(3,2),(2,4)])
Run Code Online (Sandbox Code Playgroud)

我想合并成对中这些基于重叠的第一项,并选择第二个值较大的项。

即我希望它们合并为:

[(3,2),(2,4)]   
Run Code Online (Sandbox Code Playgroud)

因为(2,1)(2,4)具有匹配的第一个值,并且(2,4)具有更大的第二个值,所以它会撞掉(2,1)

我的问题是:如何根据嵌套值合并对?

这是我尝试的:

(reduce
  (fn [first-pair second-pair]
    (if (not (= (first first-pair) (first second-pair)))
      (conj first-pair second-pair)
      (if (> (second first-pair) (second second-pair))
        first-pair
        second-pair)))
  pairs
  )
Run Code Online (Sandbox Code Playgroud)

merge clojure

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

Java GUI编辑器为快速开发和可维护性提供了什么(即Eclipse/SWT和Netbeans/Matisse)?

在Eclipse/SWT或Netbeans/Matisse之间,Java GUI编辑器在快速开发和可维护性方面提供了什么?

java eclipse user-interface netbeans

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

为什么返回类型多态中的Haskell推断类型会导致运行时错误?

我选择使用Haskell的原因在于其丰富的类型系统.这在编译时为我提供了有关我的程序的更多信息,帮助我确信它是合理的.

此外,Haskell似乎是一种处理表达式问题的最佳语言,因为Haskell类型类可以在返回类型上进行调度.(与Clojure协议相反 - 它只能在第一个参数上调度).

当我探索Haskell多态返回值函数时read:

read :: (Read a) => String -> a
Run Code Online (Sandbox Code Playgroud)

使用以下程序:

addFive :: Int -> Int
addFive x = x + 5

main :: IO ()
main = do
    print (addFive (read "11"))
    putStrLn (read "11")
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

Runtime error
...
prog: Prelude.read: no parse
Run Code Online (Sandbox Code Playgroud)

所以我似乎在使用高级类型系统的语言中获得运行时错误.

将其与Clojure中的等效代码进行对比:

(defn add-five [x] (+ 5 x))

(println (add-five (read-string "11")))
(println (read-string "11"))
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果:

16
11
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么Haskell在返回类型多态中推断类型会导致运行时错误?不应该在编译时把它们拿起来吗?

polymorphism haskell clojure

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

Scala WartRemover是否解决了杨章批评的问题?

张洋提供下列批评 Scala语言说明如下:

斯卡拉除疣解决以下问题:

  • 任何
  • Any2StringAdd
  • AsInstanceOf
  • DefaultArguments
  • EitherProjectionPartial
  • IsInstanceOf
  • ListOps
  • NoNeedForMonad
  • NonUnitStatements
  • 没有
  • 空值
  • OptionPartial
  • 产品
  • 返回
  • 序列化
  • 不安全
  • 瓦尔

我的问题是:Scala WartRemover是否解决了杨章批评的问题?

scala

-2
推荐指数
1
解决办法
262
查看次数

有没有办法将 Java8 可选返回值与在 null 上打印消息结合起来?

我从这段代码开始:

String startingValue = getMyValue();
String finishingValue = "";
if (startingValue != null) {
    finishingValue = startingValue;
} else {
    System.out.println("Value was null");
}
Run Code Online (Sandbox Code Playgroud)

我想使用 Java 8 选项将其转换为如下所示:

Optional<String> startingOptional = getMyOptional();
String finishingValue =
        startingOptional
                .map(value -> value)
                .orElse(System.out.println("value not found"));
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法将 Java8 可选返回值与在 null 上打印消息结合起来?

java null java-8 option-type

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