I'm totally confused but I can't find any solution to my problem... When I remove List.head from the currentBox function, I can see that it returns a list of Nothing. So I thought I could add a List.filter function in order to return only the box I wanted, like this :
currentBox boxId = cells |> List.map (filterRow boxId) |> List.filter (\box -> box.id == boxId) But the compilet complains that : (|>) is expecting the right argument to be a: List (Maybe Box) -> a But the right argument is: List { a | id : Int } -> List { a | id : Int } I'm sorry but I don't understand. Since cells |> List.map (filterRow boxId) returns a list, why can't I do a filter on this list? I'm not so familiar with Maybe, so maybe the problem is there... Le mercredi 26 octobre 2016 14:05:34 UTC+2, Wouter In t Velt a écrit : > > Op woensdag 26 oktober 2016 13:36:18 UTC+2 schreef Did: >> >> But It seems that, in the update function, currentBox always return >> something because it doesn't update my model... I'm obviously doing >> something wrong. But, for me, as all cells are unoccupied, this test should >> return Nothing. What's wrong ? >> > > The output of the currentBox function is not Nothing, but it is Just > Nothing. A bit of a strange outcome. > If you remove the |> List.head from the currentBox function, you can see > where things go wrong. > > I'm sorry, but I don't know how to debug elm code in general, and in >> particular with the elm lang try editor (I'm at work and I don't have elm >> working on my machine...) >> > > Below is a quick test I did in elm lang try editor. You can copy/paste > this. > With elm, it is relatively easy to test parts of your code (because all > functions are "pure", so the same input always gives the same output.) > > import Html exposing (text) > > type alias Box = { id : Int, player : Maybe Int } > > filterRow: Int -> List Box -> Maybe Box > filterRow boxId row = > row > |> List.filter (\box -> box.id == boxId && not (box.player == Nothing)) > |> List.head > > currentBox boxId = > List.map (filterRow boxId) cells > |> List.head > > cells = > [ [ Box 1 Nothing, Box 2 Nothing, Box 3 Nothing ] > , [ Box 4 Nothing, Box 5 Nothing, Box 6 Nothing ] > , [ Box 9 Nothing, Box 8 Nothing, Box 9 Nothing ] > ] > > main = > text <| toString <| currentBox 5 > > > -- 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 elm-discuss+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.