For questions like this it would be great if you could provide what you have tried so far. Did you get anywhere? What were errors you encountered?
That way answers you will get don’t just give you a finished solution. Instead we can help you improve your code and eg. explain what was missing for you to get it working on your own.
The basic way to create a HTML msg list from a HTML a list is with List.map.
You mentioned that you want to take those into li (I assume you want one li per string here) so (having the lis inside a ul) you’ll generally see something like
please note that this will say itemToLi is a function from your item-type to anymsg - which can be ok and indicates that this function works in a very broad sense.
But usually you’ll want your concrete Msg type and it can be puzzling to see Msg vs msg in the errors.
my bad - too much Haskell the last few days (in Haskell it’s :: instead of :) - one moment I fix it
You might see H.li, H.text, … quite often because many of us don’t like to import a lot of functions from an module and instead use qualified imports:
import Html as H exposing (HTML)
...
H.div [] [...]
same with import Html.Events as Ev and import Html.Attributes as Attr (the alias H, Ev and Attris probably different for different people - I like it that way
Msg (uppercase) refers to the Msg’s your app has… you probably have something like:
type Msg
= Buttonpressed
| SomeOtherMsg
So when your type says it returns HTML Msg it can have buttons that triggers these messages.
If your view function returns HTML msg that is the same as Html someLowercasename, Html x, Html whatever…
It is just a type variable, can be any msg type.
Also you do not need to use Msg as the name of your type for messages… it is just convention.