English 中文(简体)
序列自动计列
原标题:Automatic enumeration of an Sequence
  • 时间:2012-05-24 18:51:47
  •  标签:
  • f#
  • sequences

是否有标准函数来列举一个F#序列, 其功能如 Python s enumberate () ?

这很容易从零开始写作:

let enumerate (sq : seq< T>) = seq {
    let rec loop (e : IEnumerator< T>) index = seq {
        if e.MoveNext() then 
            yield (index, e.Current)
            yield! loop e (index+1) 
    }

    use enum = sq.GetEnumerator()
    yield! loop enum 0
    }

但我不想重塑轮子

PS:还有,我试过

let seasons = ["Spring"; "Summer"; "Fall"; "Winter"]
for x in Seq.zip [0..100000] seasons do
    printfn "%A" x

但此 [0. 10000] 部分看起来很丑陋 。

最佳回答
问题回答

这就是你想要的:

module Seq =
    let inline enumerate source = Seq.mapi (fun i x -> i,x) source

> ["a"; "b"] |> Seq.enumerate;;
val it : seq<int * string> = seq [(0, "a"); (1, "b")]

或热nspicy与FSharpx:

let enumerate source = Seq.mapi (curry id) source

实际上,在FSharpx中,它已经作为 Seq.index 提供。





相关问题
F#: Storing and mapping a list of functions

I have a number of events that happen in a game. I want to control the time and order at which these events occur. For example: Event 1: Show some text on screen for N frames & play a sound ...

Creating Silverlight 3 applications with F#

Is there an easy way to create Silverlight 3 applications with F# (October CTP)? I have seen the F# for Silverlight, but that only works with the May CTP. I am using Visual Studio Integrated Shell ...

How To Change List of Chars To String?

In F# I want to transform a list of chars into a string. Consider the following code: let lChars = [ a ; b ; c ] If I simply do lChars.ToString, I get "[ a ; b ; c ]". I m trying to get "abc". I ...

Unzipping ZLIB compressed portions of a binary file

I m reading a file(a flash swf) from .Net 3.5 that has a header which states whether the body of the file/Stream is compressed or not. However, I m having problems-after I rewrap the basic File ...

Pretty print a tree

Let s say I have a binary tree data structure defined as follows type a tree = | Node of a tree * a * a tree | Nil I have an instance of a tree as follows: let x = Node (Node (...

F# String Pattern-Matching with Wildcards

As part of a project I have assigned myself as a way of improving my knowledge of F# and functional programming in general, I am attempting to write a string pattern-matching algorithm from scratch ...

热门标签