Re: [elm-discuss] Re: pattern matching on a field within a record
On Sat, Sep 24, 2016 at 9:11 PM, Nick Hwrote: > > Regarding null_square: If you want to make sure that null_square is passed > by reference, you can define it as a top-level value. (That said, the > record is so small, I doubt it would make a noticeable performance > difference, unless you're planning on making a gazillion of them.) > That's what I ended up doing, and the code was pretty nice with it. martin -- 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.
Re: [elm-discuss] Re: pattern matching on a field within a record
Re: your initial post... you could rewrite the code as case Maybe.map .cell c of Just (Letter s) -> s _ -> "" Don't know if that's any easier to read, though. Regarding null_square: If you want to make sure that null_square is passed by reference, you can define it as a top-level value. (That said, the record is so small, I doubt it would make a noticeable performance difference, unless you're planning on making a gazillion of them.) On Sat, Sep 24, 2016 at 1:44 PM, Martin DeMellowrote: > Don't think that will work because c is of type Maybe Square, not Maybe > Cell. > > One further question - if I define > > let null_square = { cell = Empty, num = 0 } > > let get_square maybe_square = > case maybe_cell of > Nothing: null_square > Just s : s > > let get_letter maybe_square = > case maybe_square of > { Letter s } -> s > _ -> "" > > would that be introducing an inefficient creation of a null_square every > time I call get_letter or is it just a cheap reference? > > martin > > On Fri, Sep 23, 2016 at 12:04 PM, Simon wrote: > >> This should work >> >> case c of >> Just (Letter s) -> >> s >> _ -> "" >> >> >> >> On Friday, 23 September 2016 03:50:19 UTC+2, Martin DeMello wrote: >>> >>> If I have the following code: >>> >>> type Cell = Empty | Letter String >>> >>> type alias Square = >>> { cell : Cell >>> , num : Int >>> } >>> >>> and c : Maybe Square, >>> >>> can I do the following in a single match? >>> >>> case c of >>> Just { cell } -> >>> case cell of >>> Letter s -> s >>> _ -> "" >>> _ -> "" >>> >>> that is, i conceptually want >>> >>> case c of >>> Just { cell = Letter s } -> s >>> _ -> "" >>> >>> martin >>> >> -- >> 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. >> > > -- > 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. > -- 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.
Re: [elm-discuss] Re: pattern matching on a field within a record
Don't think that will work because c is of type Maybe Square, not Maybe Cell. One further question - if I define let null_square = { cell = Empty, num = 0 } let get_square maybe_square = case maybe_cell of Nothing: null_square Just s : s let get_letter maybe_square = case maybe_square of { Letter s } -> s _ -> "" would that be introducing an inefficient creation of a null_square every time I call get_letter or is it just a cheap reference? martin On Fri, Sep 23, 2016 at 12:04 PM, Simonwrote: > This should work > > case c of > Just (Letter s) -> > s > _ -> "" > > > > On Friday, 23 September 2016 03:50:19 UTC+2, Martin DeMello wrote: >> >> If I have the following code: >> >> type Cell = Empty | Letter String >> >> type alias Square = >> { cell : Cell >> , num : Int >> } >> >> and c : Maybe Square, >> >> can I do the following in a single match? >> >> case c of >> Just { cell } -> >> case cell of >> Letter s -> s >> _ -> "" >> _ -> "" >> >> that is, i conceptually want >> >> case c of >> Just { cell = Letter s } -> s >> _ -> "" >> >> martin >> > -- > 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. > -- 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.