From cef7c861bb38e0da91a4da7083649c48060b8434 Mon Sep 17 00:00:00 2001 From: Gustavo Leon <1261319+gusty@users.noreply.github.com> Date: Sat, 16 Sep 2023 21:34:43 +0200 Subject: [PATCH 1/2] + StructuredFormatDisplay to NonEmptyList --- src/FSharpPlus/Data/NonEmptyList.fs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/FSharpPlus/Data/NonEmptyList.fs b/src/FSharpPlus/Data/NonEmptyList.fs index 38281c520..226c34991 100644 --- a/src/FSharpPlus/Data/NonEmptyList.fs +++ b/src/FSharpPlus/Data/NonEmptyList.fs @@ -8,6 +8,7 @@ open FSharpPlus.Control /// A type-safe list that contains at least one element. +[] type NonEmptyList<'t> = {Head: 't; Tail: 't list} with interface IEnumerable<'t> with member x.GetEnumerator () = (let {Head = x; Tail = xs} = x in seq (x::xs)).GetEnumerator () interface System.Collections.IEnumerable with member x.GetEnumerator () = (let {Head = x; Tail = xs} = x in seq (x::xs)).GetEnumerator () :> System.Collections.IEnumerator @@ -15,6 +16,8 @@ type NonEmptyList<'t> = {Head: 't; Tail: 't list} with interface IReadOnlyList<'t> with member s.Item with get index = s.Item index interface NonEmptySeq<'t> with member s.First = s.Head + member private this.StructuredFormatDisplay = "nelist {" + (sprintf "%A" (this.Head::this.Tail)).[1..^1] + "}" + [] member this.head = let {Head = a; Tail = _} = this in a From fb25e75eb63204aa426081cd15c1efe5c3a0e8a9 Mon Sep 17 00:00:00 2001 From: Oskar Gewalli Date: Sun, 26 Oct 2025 20:26:29 +0200 Subject: [PATCH 2/2] Disable for Fable --- src/FSharpPlus/Data/NonEmptyList.fs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/FSharpPlus/Data/NonEmptyList.fs b/src/FSharpPlus/Data/NonEmptyList.fs index d7004391e..c4c213a59 100644 --- a/src/FSharpPlus/Data/NonEmptyList.fs +++ b/src/FSharpPlus/Data/NonEmptyList.fs @@ -8,7 +8,9 @@ open FSharpPlus.Control /// A type-safe list that contains at least one element. +#if !FABLE_COMPILER [] +#endif type NonEmptyList<'t> = {Head: 't; Tail: 't list} with interface IEnumerable<'t> with member x.GetEnumerator () = (let {Head = x; Tail = xs} = x in seq (x::xs)).GetEnumerator () interface System.Collections.IEnumerable with member x.GetEnumerator () = (let {Head = x; Tail = xs} = x in seq (x::xs)).GetEnumerator () :> System.Collections.IEnumerator @@ -16,7 +18,9 @@ type NonEmptyList<'t> = {Head: 't; Tail: 't list} with interface IReadOnlyList<'t> with member s.Item with get index = s.Item index interface NonEmptySeq<'t> with member s.First = s.Head +#if !FABLE_COMPILER member private this.StructuredFormatDisplay = "nelist {" + (sprintf "%A" (this.Head::this.Tail)).[1..^1] + "}" +#endif member this.Item = function 0 -> this.Head | n -> this.Tail.[n-1] member this.GetSlice = function