小编Rus*_*ott的帖子

Functional Java和Guava之间有很好的比较吗?

我想在我将要教授的课程中使用Functional Java或Guava(或者不太可能使用Scala).尽管在JVM上运行了很多函数式语言,但我仍然希望看到与Java尽可能相似的东西,即在Java 8中具有的功能特性,在概念和语法上最兼容的东西. .

它看起来像Functional JavaGuava是最好的候选者.我无法在功能,易用性,概念接近直接Java等方面找到任何比较它们的东西.有没有人知道这些库之间的良好比较?

java functional-programming functional-java guava

13
推荐指数
2
解决办法
3928
查看次数

Scala枚举类型在匹配/大小写中失败

枚举值似乎在匹配/案例表达式中失败.这是工作表中发生的情况.

  object EnumType extends Enumeration {
    type EnumType = Value
    val a, b = Value
  }

  import EnumType._
  val x: EnumType = b                //> x : ... .EnumType.EnumType = b

  x match {
    case a => "a"
    case b => "b"
  }                                  //> res0: String = a

  if (x == a) "a" else "b"           //> res1: String = b
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?谢谢.

enumeration scala

11
推荐指数
2
解决办法
1万
查看次数

GHC在编译模式时会做什么样的迭代?

我刚刚写了一个在Tic-Tac-Toe中移动的功能.我想推动模式匹配.所以我写了9个makeAMove条款.每个都有一个Tic-Tac-Toe板,其空间由空符号指定.它看起来像这样.

makeAMove [[E,   m12, m13],
           [m21, m22, m23],
           [m31, m32, m33]] X 1 1 = ...
Run Code Online (Sandbox Code Playgroud)

该子句将X放在板的左上角.X,O和E定义为标记.

data Mark = X |  O | E deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

当我加载文件时,我收到此警告消息.

warning:
    Pattern match checker exceeded (2000000) iterations in
    an equation for ‘mov1’. (Use -fmax-pmcheck-iterations=n
    to set the maximun number of iterations to n)
Run Code Online (Sandbox Code Playgroud)

我的问题是好奇心.模式匹配器在做什么样的迭代?为什么需要这么多?

当我将条款数量限制为5,并将其余条款放在另一个由默认情况链接的函数中时,没有问题.

haskell pattern-matching ghc

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

如何从整体工作?

类型fromIntegral(Num b, Integral a) => a -> b.我想了解这是怎么可能的,代码是什么,可以根据需要将任何积分数转换为任何数字类型.

实际代码fromIntegral被列为

fromIntegral = fromInteger . toInteger
Run Code Online (Sandbox Code Playgroud)

代码fromInteger正在instance Num Intinstance Num Integer它们分别是:

instance  Num Int  where
  ...
  fromInteger i = I# (integerToInt i)
Run Code Online (Sandbox Code Playgroud)

instance  Num Integer  where
  ...
  fromInteger x  =  x
Run Code Online (Sandbox Code Playgroud)

假设I#调用一个C程序将一个转换Integer为一个Int我没有看到这些中的任何一个生成结果,例如,可以添加到a Float.他们如何去往IntInteger去别的什么?

fromInteger将嵌入一个表达式,该表达式要求它生成某种类型.它无法知道所需的类型是什么?那会发生什么?

谢谢.

haskell

7
推荐指数
2
解决办法
1177
查看次数

Python 中的函数组合运算符

这个问题中,我询问了Python中的函数组合运算符。@Philip Tzou提供了以下代码,它可以完成这项工作。

import functools

class Composable:

    def __init__(self, func):
        self.func = func
        functools.update_wrapper(self, func)

    def __matmul__(self, other):
        return lambda *args, **kw: self.func(other.func(*args, **kw))

    def __call__(self, *args, **kw):
        return self.func(*args, **kw)
Run Code Online (Sandbox Code Playgroud)

我添加了以下功能。

def __mul__(self, other):
    return lambda *args, **kw: self.func(other.func(*args, **kw))

def __gt__(self, other):
    return lambda *args, **kw: self.func(other.func(*args, **kw))
Run Code Online (Sandbox Code Playgroud)

通过这些添加,我们可以使用@*>as 运算符来组成函数。例如,我们可以编写print((add1 @ add2)(5), (add1 * add2)(5), (add1 > add2)(5))并获取# 8 8 8. (PyCharm 抱怨布尔值不可调用(add1 > …

python function-composition python-decorators

7
推荐指数
2
解决办法
5635
查看次数

Haskell中是否有一个函数返回其参数的类型(或显示类型的字符串)?

是否有一个可以在Haskell程序中调用的函数,:t它以交互方式执行什么操作?或者这是Haskell无法做到的事情,因为它的类型没有意义.将类型名称作为String返回的函数怎么办?

haskell

6
推荐指数
2
解决办法
1152
查看次数

生成Haskell表达式的逐步减少

是否有一个系统可以逐步减少Haskell表达式?目的是提供延迟评估的教程示例.如果它是用Haskell编写的,那会很好,但这不是必需的.

例如,假设我们有:

myCycle xs = xs `myAppend` myCycle xs

[] `myAppend` ys = ys
(x:xs) `myAppend` ys = x: (xs `myAppend` ys)

myTake 0 _  = []
myTake _ [] = []
myTake n (x:xs) = x: (myTake (n-1) xs)
Run Code Online (Sandbox Code Playgroud)

评估> myTake 3 $ myCycle [1, 2]应该显示这样的序列.(如果我在这方面犯了任何错误,请纠正我.)

>  myTake 3 $ myCycle [1, 2]
=> myTake 3 ([1, 2] `myAppend` myCycle [1, 2])
=> myTake 3 (1:([2] `myAppend` myCycle [1, 2]))
=> 1: myTake 2 ([2] `myAppend` myCycle …
Run Code Online (Sandbox Code Playgroud)

haskell

5
推荐指数
0
解决办法
151
查看次数

安装PyTorch

我想在Python程序中使用PyTorch。安装说明需要conda。安装了Conda之后,我跑了

>conda install -c pytorch pytorch (as instructed on the PyTorch [page][1])
Run Code Online (Sandbox Code Playgroud)

看起来很有希望-直到最后。

Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Miniconda3

  added / updated specs:
    - pytorch


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    icc_rt-2017.0.4            |       h97af966_0         8.0 MB
    vs2015_runtime-15.5.2      |                3         2.2 MB
    pytorch-0.4.0              |py36_cuda80_cudnn7he774522_1       529.2 MB      pytorch
    mkl-2018.0.3               |                1       178.1 MB
    numpy-1.14.5               |   py36h9fa60d3_4          35 KB
    intel-openmp-2018.0.3      |                0         1.7 MB
    numpy-base-1.14.5          |   py36h5c71026_4         3.8 MB
    vc-14.1                    |       h0510ff6_3           5 KB
    blas-1.0 …
Run Code Online (Sandbox Code Playgroud)

python conda pytorch

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

Google Colab 在多大程度上支持 Python 类型?

我已经输入了包含这些行的代码。

from typing import Dict, List, Set, Tuple

def pairs_sum_to_k(a_set: Set[int], k: int) -> List[Tuple[int, int]]:
    ...
Run Code Online (Sandbox Code Playgroud)

代码编译并运行。那挺好的。当我尝试导入typingColab中没有的内容时,生成了一条错误消息,这也很好。

不好的是,当类型提示与程序不一致时,例如,将返回类型更改为 simple int,Colab 没有抱怨。这表明 Colab 可以处理类型提示语法,但它对类型声明根本不做任何事情。是这样吗?我应该期待 Colab 提供什么样的打字支持(如果有)?

谢谢。

python google-colaboratory python-typing

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

有没有办法在 colab 程序中设置断点然后检查变量值?

有没有办法在 colab 程序中设置断点然后检查变量值?如果没有,那么使用 colab 时调试程序的最佳方法是什么——除了 print 语句?

google-colaboratory

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