Non empty lists using Zippers

type alias Book =
    List Page

currentPage : Book -> Page
currentPage book =
    case book of
        page :: _ ->
        [] ->
            Debug.todo "this is a dead end."


How can I ensure that a list always contains at least one element.


Such a list is called a Zipper List:

type alias ZipperList a =
    { previous : List a
    , current : a
    , next : List a

Package: Use miyamoen/select-list for a complete implementation of a Zipper List.

Further reading

Last updated