Elmで超簡易Todoリスト
Todoリストと言っても、フィールドに入力した内容がli要素として追加されるだけ。 Elm習いたてなので、何か無駄があるかも。 個人的になるほどと思った点はList.mapを利用してli要素を生成するところで、これは要素を生成する関数が子要素のリストを引数に取るから実現できる。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import Browser import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (onClick, onInput) main = Browser.sandbox { init = init, update = update, view = view } --Model type alias Todo = { description : String } type alias Model = { todos : List Todo , input : Todo } init : Model init = { todos = [] , input = Todo "" } type Msg = Add | Change String --Update update : Msg -> Model -> Model update msg model = case msg of Add -> { model | todos = model.input :: model.todos } Change str -> { model | input = Todo str } -- View view : Model -> Html Msg view model = div [] [ input [ type_ "text", placeholder "What will you do?", onInput Change] [] , button [ onClick Add ] [ text "Add" ] , ul [] (List.map viewLi model.todos) ] viewLi : Todo -> Html Msg viewLi todo = li [] [ text todo.description ]