Create a list which may have one (but no more than one) item selected. You can never select an item that isn't in the list. Selections are optional, so this is slightly different than a zipper.
Create a Selection list from a regular list by using
Let's use this to choose what we'd like for lunch.
import List.Selection exposing (Selection) type Lunch = Burrito | ChickenWrap | TacoSalad | DonerKebab todaysMenu : Selection Lunch todaysMenu = [ Burrito, ChickenWrap, TacoSalad ] |> List.Selection.fromList -- create a new Selection list |> List.Selection.select Burrito -- now let's see, I think I'd like a burrito (yum, monads!)
Since I already chose what I want for lunch, I can get it with
List.Selection.selected todaysMenu -- `Just Burrito`
But what if you try and select something that doesn't exist in the list? The shop was out of doner kebab today, but what if we ask for it?
todaysMenu |> List.Selection.select DonerKebab -- this doesn't exist in our menu, so... |> List.Selection.selected -- `Just Burrito` (selection unchanged)
And if I change my mind, I can remove my choice with
todaysMenu |> List.Selection.deselect -- deselect any current selection |> List.Selection.selected -- `Nothing`
Install Elm and
elm-verify-examples from NPM, then run
make to run tests and generate documentation.
Licensed under a BSD 3-Clause license