In Elm you don't have statements, only expressions and the if model.flag == True then expression was not completed. It needs the else branch
You cannot update the model in the view, only in update. On Wed, Feb 22, 2017 at 8:08 PM, Anurup Mitra <[email protected]> wrote: > Hello! > > Disclaimer : I am not a programmer and don't understand computer science > terms. The only formal education that I have had with programming is BASIC > (school) and C (college - can't remember most of it :-p). Javascript seems > clumsy and I came across Elm and tried learning it. Was working through the > Elm tutorial and tried adding some of the extra suggested stuff in the > "Forms" section of the Tutorial to test my own understanding. > > Tried compiling the following code. Idea is to validate form on pressing > the Submit button. > > import Html exposing (..) > import Html.Attributes exposing (..) > import Html.Events exposing (onInput, onClick) > import String > > main = > Html.beginnerProgram { model = model, view = view, update = update } > > -- MODEL > > type alias Model = > { name : String > , age : String > , password : String > , passwordAgain : String > , flag : Bool > } > > model : Model > model = > Model "" "" "" "" False > > -- UPDATE > > type Msg > = Name String > | Password String > | PasswordAgain String > | Age String > | SetFlag > > update : Msg -> Model -> Model > update msg model = > case msg of > Name name -> > { model | name = name } > > Age age -> > { model | age = age} > > Password password -> > { model | password = password } > > PasswordAgain password -> > { model | passwordAgain = password } > > SetFlag -> > { model | flag = True } > > -- VIEW > > view : Model -> Html Msg > view model = > div [] > [ input [ type_ "text", placeholder "Name", onInput Name ] [] > , input [ type_ "text", placeholder "Age", onInput Age ] [] > , input [ type_ "password", placeholder "Password", onInput Password ] > [] > , input [ type_ "password", placeholder "Re-enter Password", onInput > PasswordAgain ] [] > , div [] [button [ onClick SetFlag ] [text "Submit"] ] > , viewValidation model > ] > > viewValidation : Model -> Html msg > viewValidation model = > if model.flag == True then > { model | flag = False } > let (color, message) = > if Result.withDefault 0 (String.toInt model.age) == 0 then > ("red", "Funny Age") > else if String.length model.password < 9 then > ("red", "Password too short") > else if model.password == model.passwordAgain then > ("green", "OK") > else > ("red", "Passwords do not match!") > in > div [ style [("color", color)] ] [ text message ] > > This throws a compiler error as > > Detected errors in 1 module. > > -- SYNTAX PROBLEM ------------------------------ > -------------------------------- > > I ran into something unexpected when parsing your code! > > 68| let (color, message) = > ^ > I am looking for one of the following things: > > an 'else' branch > > > > whitespace > > > > > I apologise in advance if this is not the correct platform to ask this or > if Elm is not supposed to be for novices, but I would greatly appreciate > any inputs regarding this. > > Best Regards > Anurup > > -- > You received this message because you are subscribed to the Google Groups > "Elm Discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- There is NO FATE, we are the creators. blog: http://damoc.ro/ -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
