在Google App Engine(Java)上运行异步线程的所有方法是什么?我能想到一个 - 但我想知道所有这些/
#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)
(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) 鉴于以下 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 TypeClass 的调度是动态的吗?
假设我有以下值构造函数:
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中的类型?
在一些函数式语言中,部分应用函数和柯里化函数是两个相似但不同的概念。
阅读《Learn You a Haskell for Great Good》一书,作者似乎可以互换应用这些。
【Curried 函数】 Haskell 中的每个函数官方都只带一个参数。
...
如果我们调用一个参数太少的函数,我们会得到一个部分应用的函数,这意味着一个函数的参数与我们省略的参数一样多。
我的问题是:Haskell 中部分应用和柯里化的概念可以互换吗?
我正在用以下命令运行我的Docker容器:
docker run -d sequenceiq/hadoop-docker:2.6.0
Run Code Online (Sandbox Code Playgroud)
在我的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) 我想要得到的总和seq的IntegerS 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的整数?
鉴于 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) 在Eclipse/SWT或Netbeans/Matisse之间,Java GUI编辑器在快速开发和可维护性方面提供了什么?
我选择使用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在返回类型多态中推断类型会导致运行时错误?不应该在编译时把它们拿起来吗?
在斯卡拉除疣解决以下问题:
我的问题是:Scala WartRemover是否解决了杨章批评的问题?
我从这段代码开始:
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 上打印消息结合起来?