标签: seq

初始化无限的BigIntegers列表

好的,所以我需要一个所有正整数的列表.首先想到的是:

let numbers:Seq<bigint>=Seq.initInfinite n...
Run Code Online (Sandbox Code Playgroud)

但initInfite实际上并不存在:http://msdn.microsoft.com/en-us/library/ee370429.aspx (与bigint不同)它唯一:Int32.MaxValue = 2,147,483,647,这远不够大.

目前我的计划是用某种手工类替换序列(可能是IEnumerable的意思).这很简单(可能对我的使用更有效)但我想知道如何做到这一点

ienumerable f# biginteger sequence seq

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

部分应用函数的`seq`

可以说我有以下内容:

f :: a -> b -> c
g :: b -> c
g = f 10
Run Code Online (Sandbox Code Playgroud)

现在让我们说f实际上:

f x y = f1 x + y
Run Code Online (Sandbox Code Playgroud)

将:

g `seq` ...
Run Code Online (Sandbox Code Playgroud)

实际上是评估f1 10,所以以后运行时

g 9
Run Code Online (Sandbox Code Playgroud)

它实际上只是一个简单的添加?

如果没有,有没有办法"评估"部分应用功能的部分?

我在寻找一个通用的解决办法,不依赖于知道如何f和g工作.

haskell seq

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

从两个或更多seqs创建seq的地图

我是Clojure的新手,我想知道是否有办法从两个或更多序列创建一系列地图.

假设你有:

(def numbers '(1 2 3))
(def letters '("a" "b" "c"))
(def shapes '("circle" "square" "triangle")) 
Run Code Online (Sandbox Code Playgroud)

如果你合并那些我想在Ruby中得到哈希数组,或者在Clojure中得到一系列地图?

({:number 1, :letter "a", :shape "circle"} {:number 2, :letter "b", :shape "square"} {:number 3, :letter "c", :shape "triangle"})
Run Code Online (Sandbox Code Playgroud)

谢谢!

clojure hashmap map seq

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

这个惯用的F#是一个相当快速的无限递归序列吗?

在解决第12个项目的欧拉问题时,我开始着手制作无限序列以获得连续的三角形数字.我的第一次尝试是:

let slowTriangularNumbers =

  let rec triangularNumbersFrom n = 
    seq { 
      yield seq { 0 .. n } |> Seq.sum
      yield! triangularNumbersFrom (n + 1) 
    }

   triangularNumbersFrom 1
Run Code Online (Sandbox Code Playgroud)

事实证明这是非常缓慢的 - 每次获得下一个项目时,它必须计算导致的所有增加n.

我的下一次尝试是:

let fasterTriangularNumbers =

  let cache = System.Collections.Generic.Dictionary<int, int>()
  cache.[0] <- 0         

  let rec triangularNumbersFrom n = 
  seq { 
    cache.[n] <- cache.[n - 1] + n                   
    yield cache.[n]
    yield! triangularNumbersFrom (n + 1) 
  }

  triangularNumbersFrom 1
Run Code Online (Sandbox Code Playgroud)

引入可变字典已经大大加快了它的速度,但是有一个可变集合这是正常的,还是我可以用另一种方式表示状态?

f# immutability seq

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

F#序列过滤器处于功能样式

我有一系列需要过滤的数据.这很明显,因为我们Seq.filter有价值.但是,我的问题是我需要过滤,直到最终的集合将达到一定数量的项目.我不想对所有项目执行过滤而不是截断,我想在不再需要它的时候停止过滤.

在命令式编程中,基本上这是一项非常简单的任务 - 我可以在F#中轻松完成,就像在C#中完成一样,但我想在功能风格上做到这一点.

我已经看了一下该Collections.Seq模块,但我没有发现任何可以帮助我的东西.事实上我需要类似的东西filterWhile.有任何想法吗?

谢谢你的帮助.

f# functional-programming filter seq

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

Bash seq在for循环中产生两个独立的数字序列

我想创建一个简单的bash循环,它迭代一系列具有特定间隔的数字,然后是不同的数字序列,例如

for i in $(seq 0 5 15)
do
    echo $i
done
Run Code Online (Sandbox Code Playgroud)

但是在通过i= 0,5,10,15进行交互之后,我希望它能够反复说出30,35,40,45.

有没有办法使用seq?还是另类?

bash for-loop seq

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

如何在函数式编程(F#)中将行号添加到文本文件中?

它适用于for循环和可变变量:

let addLnNum filename =    
    use outFile = new StreamWriter(@"out.txt")    
    let mutable count = 1
    for line in File.ReadLines(filename) do
        let newLine = addPre (count.ToString()) line
        outFile.WriteLine newLine
        count <- count + 1
Run Code Online (Sandbox Code Playgroud)

但它非常"无功能",所以我很好奇这样做的正确方法是什么?我想到如何将索引号附加到字符串列表:

let rec addIndex (startInd:int) l=
    match l with
    |x::xs ->  startInd.ToString()+x :: (addIndex (startInd+1) xs)
    |[] -> []
Run Code Online (Sandbox Code Playgroud)

但它不适用于File.ReadLines:

let addLnNum2 filename =    
    use outFile = new StreamWriter(@"out.txt")    
    File.ReadLines(filename)
    |> addIndex 1
    |> ignore
    //Error 1   Type mismatch. Expecting a Collections.Generic.IEnumerable<string> -> 'a    
    //but given a …
Run Code Online (Sandbox Code Playgroud)

f# seq readlines

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

解析视图失败

我定义了以下diff函数Seq[Int],用于view避免复制数据:

object viewDiff {
  def main(args: Array[String]){
    val values = 1 to 10
    println("diff="+diffInt(values).toList)
  }

  def diffInt(seq: Seq[Int]): Seq[Int] = {
    val v1 = seq.view(0,seq.size-1)
    val v2 = seq.view(1,seq.size)
    (v2,v1).zipped.map(_-_)
  }
} 
Run Code Online (Sandbox Code Playgroud)

这段代码失败了UnsupportedOperationException.如果我使用slice而不是view它的工作.

有谁能解释一下?

[用scala 2.10.5和2.11.6测试]

编辑

我选择了卡洛斯的答案,因为这是对该问题的(第一个)正确解释.但是,som-snytt的答案更加详细,并提供了一个使用压缩对象视图的简单解决方案.

我还发布了一个非常简单的解决方案,适用于这种特定情况.

注意

在上面的代码中,我也在计算seq导数的算法上犯了一个错误.最后一行应该是:seq.head +: (v2,v1).zipped.map( _-_ )

scala seq

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

在scala中的Seq中添加项目

我正在使用光滑的scala play 2.我有一个Seq喜欢

val customerList: Seq[CustomerDetail] = Seq(CustomerDetail("id", "status", "name"))
Run Code Online (Sandbox Code Playgroud)

我想在此customerList中添加一个CustomerDetail项.我怎样才能做到这一点?我已经试过了

customerList :+ CustomerDetail("1", "Active", "Shougat")
Run Code Online (Sandbox Code Playgroud)

但这没有做任何事情.

scala seq

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

类型'Async <string []>'与'seq <'a>'类型不兼容

我有一个mySources变量,seq<Async <string []>>.我的目标是将序列展平并将序列中的所有元素连接在一起Async<string []>

我正在使用Seq.collect方法.

let myJoinedAsyncs = Seq.collect (fun elems -> elems) mySources

但是这行在mySource上给出了一个错误,表明:

'Async'类型与'seq <'a>'类型不兼容

有任何想法吗?谢谢!

f# asynchronous seq

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