Skip to content

Add LazyList.consLazy #134

@brianberns

Description

@brianberns

Description

Conceptually, a LazyList<'T> contains a head of type 'T and a tail of type Lazy<LazyList<'T>>. Strangely, there is no direct way to construct such a lazy list using the current API. The best can be done is LazyList.consDelayed head (fun () -> tail.Value), which is unnecessarily wasteful.

I suggest a new function for creating such a list: LazyList.consLazy (head : <'T>) (tail : Lazy<LazyList<'T>>).

For bonus points, also provide an infix operator that can be used for clarity. I suggest something like (@).

Desired result

I should be able to create an infinite list of 1's like this: let rec ones = 1 @ lazy ones.

Known workarounds

consDelayed can be used but it is inelegant and wasteful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions