compiler icon indicating copy to clipboard operation
compiler copied to clipboard

Suboptimal error for mising function arguments

Open Golden-Phy opened this issue 1 year ago • 1 comments

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)]]
  • Elm: Playground on https://elm-lang.org/try as of 5/25/2024
  • Browser: Mozilla Firefox for Fedora 123.0 (64)
  • Operating System: Fedora Linux 39

Additional Details

Compiler output:

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.

Golden-Phy avatar May 25 '24 13:05 Golden-Phy

Thanks for reporting this! To set expectations:

  • Issues are reviewed in batches, so it can take some time to get a response.
  • Ask questions in a community forum. You will get an answer quicker that way!
  • If you experience something similar, open a new issue. We like duplicates.

Finally, please be patient with the core team. They are trying their best with limited resources.

github-actions[bot] avatar May 25 '24 13:05 github-actions[bot]