小编elm*_*elm的帖子

Haskell中无限懒惰的因子

与Fibonacci系列类似的方式可以生成如下,

fibs :: [Integer]
fibs = 1 : 1 : zipWith (+) fibs (tail fibs)
Run Code Online (Sandbox Code Playgroud)

如何定义阶乘的系列.

更新

令人尴尬的是,在添加这个问题之前尝试了这个,

Prelude> let factorial = 2 : 6 : zipWith(*) factorial (tail factorial)
Prelude> take 5 factorial
[2,6,12,72,864]
Run Code Online (Sandbox Code Playgroud)

事实上,尾部的数字并不是连续的值.

haskell factorial lazy-evaluation

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

Scala sys.env用于未定义的环境变量

这个表达

sys.env("HOME")
Run Code Online (Sandbox Code Playgroud)

传递到主文件夹的路径; 通常sys.env("EnvVar")提供与之相关的价值$EnvVar.但是,对于$LIB未声明的环境变量

java.util.NoSuchElementException: key not found: LIB
Run Code Online (Sandbox Code Playgroud)

如何确定是否声明变量而不必捕获异常?

scala environment-variables

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

spark scala最有效的方法来进行部分字符串计数

我有一个问题,关于在1000万长度的火花RDD(或scala数组)中进行部分字符串匹配的最有效方法.考虑以下:

val set1 = Array("star wars", "ipad") //These are the String I am looking for
val set2 = RDD[("user1", "star wars 7 is coming out"),
           ("user1", "where to watch star wars"),
           ("user2", "star wars"),
           ("user2", "cheap ipad")]
Run Code Online (Sandbox Code Playgroud)

我希望能够计算Set1中属于Set1的每个字符串的出现次数.所以结果应该是这样的:

Result = ("star wars", 3),("ipad", 1)
Run Code Online (Sandbox Code Playgroud)

我还想计算搜索该术语的用户数(即不同的用户),因此结果应为:

Result = ("star wars", 2), ("ipad", 1)
Run Code Online (Sandbox Code Playgroud)

我尝试了两种方法,第一种方法是将RDD字符串转换为set,flatMapValues然后进行连接操作,但它耗费内存.我正在考虑的另一种方法是正则表达式方法,因为只需要计数并给出确切的字符串,但我不知道如何使其有效(通过创建函数并在映射RDD时调用它?)

我似乎能够在使用LIKE的pgsql中很容易地做到这一点,但不确定是否存在以相同方式工作的RDD连接.

任何帮助将不胜感激.

string scala match apache-spark

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

收集单个值的多个部分函数的结果?

假设我有一些可能有重叠域的部分函数:

val funcs: Seq[PartialFunction[Any, Int]] = Vector(
{ case i: Int if i % 2 == 0 => i*2 }
,
{ case i: Int if i % 2 == 1 => i*3 }
,
{ case i: Int if i % 6 == 0 => i*5 }
)
Run Code Online (Sandbox Code Playgroud)

我想将它们应用于一个值,并收集该val定义的任何结果.我认为有一种优雅的方式可以collect用于此,但我能做的最好的方法是

val num = 66
funcs.collect { case func if func.isDefinedAt(num) => func(num) }
// or 
funcs.filter(_.isDefinedAt(num)).map(_(num))
Run Code Online (Sandbox Code Playgroud)

这看起来不干净.有没有办法使用内置案例机制来测试定义和同时评估,可能是通过将它们与测试值或类似的东西进行对比?

scala pattern-matching partialfunction

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

转换对中的Scala序列

我有一个这样的序列:

val l = Seq(1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

我想转变为 List(Seq(1,2), Seq(2,3), Seq(3,4))

这是我尝试过的:

def getPairs(inter: Seq[(Int, Int)]): Seq[(Int, Int)] = l match {
 case Nil => inter
 case x :: xs => getPairs(inter :+ (x, xs.head))
}
Run Code Online (Sandbox Code Playgroud)

这奇怪似乎不起作用?有什么建议?

scala scala-collections

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

如何在Scala中将List [Any]转换为List(Int,Int)?

我有List[Any]哪些有价值

List((0,0), (1,1), (1,3), (2,2), (3,1))
Run Code Online (Sandbox Code Playgroud)

我想把它转换成

List[(Int,Int)]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

scala

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

Scala用未来转换Seq

我有一个Seq看起来像这样的元组:

Seq[(Future[Iterable[Type1]], Future[Iterator[Type2]])]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为以下内容:

Future[Seq([Iterable[Type1], [Iterable[Type2])]
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

scala future

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

使用元组进行Scala折叠操作

val g = List(1,2,3)

val k = g.fold((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误=

found   : ((Int, Int), Int) => (Int, Int)
 required: (Any, Any) => Any
              g.fold((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))
Run Code Online (Sandbox Code Playgroud)

有人可以解释,为什么它期待"任何"类型.

但下面的工作:

g.map((_,1))

g.map((_,1)).fold((0,0))((a,b)=> (a._1+b._1,a._2+b._2))
res211: (Int, Int) = (6,3)
Run Code Online (Sandbox Code Playgroud)

scala

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

如何在Scala中定义Tuple1?

我尝试使用(1,),但不起作用,在scala中定义Tuple1的语法是什么?

scala> val a=(1,)
<console>:1: error: illegal start of simple expression
       val a=(1,)
Run Code Online (Sandbox Code Playgroud)

scala

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

在scala中使用Option.fold时避免强制转换

我想知道是否有一个构造,Option.fold这将使以下None.**.asInstanceOf[Option[String]**不必要:

def getHiveDir(sqlc: SQLContext, tname: String, partColVals: Seq[(String, String)]): Option[String] = {
     getHiveDir(sqlc, tname).fold(None.asInstanceOf[Option[String]]) { tloc =>
           // some stuff
  }
  Some(someString)
 }
Run Code Online (Sandbox Code Playgroud)

目前,上面.asInstanceOf[Option[String]]是必需的,或者发生编译错误:None不被识别为Option[String]

如何重新安排上面的代码以避免额外的演员?

scala

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