It is 6:45 on a Sunday morning and I am on a train to Tel Aviv, the perfect time to talk about an Elm Package. Today I want to checkout List.SafeList
This is a rather cool package that I have not had the opertunity to use yet. But what it does is allows us to encode a list with its length in the type.
Where this really shines is that in a function like map2 you can map together 2 lists and ensure that their lengths match. In a normal Elm list the extra elements are just ignored.
map2 : (a -> b -> c -> d) -> SafeList a n -> SafeList b n -> SafeList c n
Or Here is the
SafeList.head function. Note that it does not return
a Maybe, what it does is ensure that there is at least one element in
the list with the
head : SafeList a (OnePlus n) -> a
You can also convert SafeLists to normal Lists if you want.
I am looking forward to using this at some point.
If you have a module that you think more people should know about email me “zach at get-finch.com”. You can also sign up for my mailing list to hear about these posts as soon as I write them.