小编per*_*i4n的帖子

掌握不可变数据结构

我正在学习斯卡拉,作为一名优秀的学生,我试图遵守我发现的所有规则.

一条规则是:不可靠性!

所以我试图使用不可变数据结构和val来编写所有代码,有时候这很难.

但今天我想到了自己:唯一重要的是对象/类应该没有可变状态.我不是被迫以不可变的样式编写所有方法,因为这些方法不会相互影响.

我的问题:我是否正确或有任何问题/缺点我看不到

编辑:

aishwarya的代码示例:

def logLikelihood(seq: Iterator[T]): Double = {
  val sequence = seq.toList
  val stateSequence = (0 to order).toList.padTo(sequence.length,order)
  val seqPos = sequence.zipWithIndex

  def probOfSymbAtPos(symb: T, pos: Int) : Double = {
    val state = states(stateSequence(pos))
    M.log(state( seqPos.map( _._1 ).slice(0, pos).takeRight(order), symb))
  }

  val probs = seqPos.map( i => probOfSymbAtPos(i._1,i._2) )

  probs.sum
}  
Run Code Online (Sandbox Code Playgroud)

说明:这是一种计算变量阶齐次马尔可夫模型的对数似然的方法.state的apply方法获取所有先前的符号和即将到来的符号,并返回这样做的概率.

正如您所看到的:整个方法只是增加了一些使用变量更容易的概率.

functional-programming scala immutability data-structures

19
推荐指数
2
解决办法
3507
查看次数

隐式值类中的继承是否会引入开销?

我想将scala的值类应用于我的一个项目,因为它们使我能够丰富某些原始类型而没有很大的开销(我希望)并保持类型安全.

object Position {

  implicit class Pos( val i: Int ) extends AnyVal with Ordered[Pos] {

    def +( p: Pos ): Pos = i + p.i

    def -( p: Pos ): Pos = if ( i - p.i < 0 ) 0 else i - p.i

    def compare( p: Pos ): Int = i - p.i

  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:每当我使用它们时,继承Ordered强制Pos对象的分配(从而引入很大的开销)吗?如果是这样的话:有没有办法绕过这个?

performance scala implicit value-class

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

所有使用scala重复的排列

我正在寻找scala方式来给出所有排列而不重复.我知道这个网站上已有一些帖子,但它们似乎有一个稍微不同的问题.

我正在寻找重复的所有排列.例如:

combine(List('A','C','G'))
Run Code Online (Sandbox Code Playgroud)

应该产量:

List(List('A'.'A','A'),List('A'.'A','C'),List('A'.'A','G'),List('A'.'C','A'),
List('A'.'C',''C), ... List('G'.'G','G')
Run Code Online (Sandbox Code Playgroud)

如果我的问题已经解决但我无法找到,我很抱歉.

提前致谢.

编辑:

我自己的方法(不编译):

def combine(size: Int = sym.length) : List[List[T]] = {
  size match {
    case 0 => List()
    case 1 => sym.toList.map(List(_))
    case _ => for (el <- sym) yield el :: combine(size-1)
  }
}
Run Code Online (Sandbox Code Playgroud)

sym是一个类的数组成员,它包含要组合的所有符号.

combinations scala combinatorics repeat

8
推荐指数
3
解决办法
8484
查看次数

将 AWS EMR 工件存储库与构建工具结合使用

我尝试使用 EMR 工件存储库将emrfs-hadoop- assembly及其依赖项打包到我的应用程序中。

我找到的资源告诉我必须使用的 Maven 存储库的 URL,但没有告诉我该存储库中的实际工件。EMR 版本中包含的组件版本是公开可用的,但我必须猜测所有非标准依赖项(例如 hadoop-common)的artifactIdgroupId 。该存储库适用于后缀为 的依赖项amzn,但我仍然无法下载相关的 jar。

谁能提供有关如何使用这个 Maven 存储库的信息?

编辑:

我查看了我想通过 Maven/Gradle 获取的 jar 的pom.xml并获取了artifactIdgroupId,但构建工具无法解析这些内容。

gradle amazon-web-services maven amazon-emr

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

Scala函数用于获取大小为k的所有已排序子集

我给了一组大小为L,并希望生成大小为k的每个已排序子集.如果您的解决方案是scala但是我可以自己翻译,那将会很棒.

应该产生L = 6和k = 3的示例运行.

1,2,3
1,2,4
1,2,5
1,2,6
1,3,4
1,3,5
1,3,6
1,4,5
1,4,6
1,5,6
2,3,4
2,3,5
2,3,6
2,4,5
2,4,6
2,5,6
3,4,5
3,4,6
3,5,6
4,5,6

我的scala尝试类似于:

object Util {
  def main(args : Array[String]) : Unit = {
    starts(6,3,1)
  }

  def starts(L: Int, num: Int, level: Int) : List[List[Int]] = {
    if( num == 0 ) {
      return List()
    }else{
      (level to (L-num+1)).map( o => o :: starts(L,num-1,level+1))
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望你能帮助我.

scala function sorted permutation

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

使用grep与大型模式文件

我只想用grep和-f FILE选项.这应该使grep使用FILE的每一行作为模式并搜索它.

跑:

grep -f patternfile searchfile
Run Code Online (Sandbox Code Playgroud)

我使用的模式文件大400MB.我要搜索的文件是7GB.3分钟后,该过程最终得到70GB RAM并且没有反应.

这是正常的吗?难道我做错了什么?grep没有能力是如此大规模?

谢谢你的想法.

memory grep design-patterns file

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

应用函数并在Haskell中包含元组

我正在寻找一种方法来编写一个函数,该函数应用提供的函数并将参数和函数结果包装在元组中.如:

applyZip :: (a -> b) -> a -> (a,b)
applyZip f x = (x, f x)
Run Code Online (Sandbox Code Playgroud)

是否有更惯用的方法在Haskell中编写它,最好是使用库代码?

编辑:我真的对其他解决方法感兴趣.如果您发现自己遇到同样的问题,那么使用描述性名称自行实现该功能可能更为可取.

haskell

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

使用scala累积元素和

可能重复:
在Scala中,如何折叠List并返回中间结果?

我正在寻找一种以下列方式累积SortedTree元素的功能方法:

我想要一个列表,其中包含SortedTree中所有元素的所有前体(包括元素本身)的总和.

对于Exmaple:

SortedTree包含(0.4,0.3,0.2,0.1,0.05)

我想要的清单:(0,4.7.7,0.9,1,1.05)

有什么建议?

scala

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