Quick Summary: The compiler brings up a type mismatch between function x -> type and type when trying to use the result of a partial function call. It does not give a hint that the user might want to apply the function to x by giving it as a parameter.
SSCCE
module Main exposing (..)
import Browser
import Html exposing (Html, div, text)
-- MAIN
main =
Browser.sandbox { init = init, update = update, view = view }
-- UPDATE
update : () -> Model -> Model
update _ model =
model
-- MODEL
type alias Model = Chain
type Chain
= Empty
| Node Chain
init : Model
init = Node (Node Empty)
-- VIEW
view : Model -> Html ()
view model =
div [] (render
model
-- 2. 1
)
render : Chain -> Int -> List (Html ())
render chain depth =
case chain of
Empty -> []
Node subChain ->
(render
subChain
-- 1. (depth + 1)
)
++ [div [] [text (String.fromInt depth)]]
TYPE MISMATCH
Jump to problem
The (++) operator cannot append this type of value:
38|> (render
39|> subChain
40| -- 1. (depth + 1)
41| )
42| ++ [div [] [text (String.fromInt depth)]]
This `render` call produces:
Int -> List (Html ())
But the (++) operator is only for appending List and String values. Maybe put
this value in [] to make it a list?
Hint: I only know how to append strings and lists.
Quick Summary: The compiler brings up a type mismatch between function x -> type and type when trying to use the result of a partial function call. It does not give a hint that the user might want to apply the function to x by giving it as a parameter.
SSCCE
Additional Details
Compiler output: