Another possible take on your example:

forecastProtected : Maybe Float -> Maybe Float -> Maybe Float -> (List
Int) -> List FloatforecastProtected q d b months =
  case combine [q, d, b] of
      Just [q, d, b] -> forecast q d b months
      _ -> []

where combine is from
http://package.elm-lang.org/packages/elm-community/maybe-extra.
​

2016-08-04 2:07 GMT+02:00 Austin B <austi...@gmail.com>:

> Hey thank you!
>
> On Wednesday, August 3, 2016 at 4:51:55 PM UTC-7, Joey Eremondi wrote:
>>
>> The key here is to use the wildcard _ in your pattern matching, which
>> will match any value.
>>
>> You can also bundle your arguments in a tuple, without needing to use
>> records.
>>
>> forecastProtected : Maybe Float -> Maybe Float -> Maybe Float -> (List
>> Int) -> List Float
>> forecastProtected q d b months =
>>   case (q, d, b) of
>>       ( Just qF, Just dF, Just bF ) -> forecast qF dF bF months
>>       _ -> []
>>
>> Note also that your syntax was wrong in your case: Maybe is a type, not a
>> value, so you can never use it in a pattern match. You need to match either
>> against the constructors (Just, Nothing) or wildcards, or variables.
>>
>> On Wed, Aug 3, 2016 at 4:44 PM, Austin B <aust...@gmail.com> wrote:
>>
>>> I am trying to ensure that three arguments to a function are all not
>>> Nothing.
>>>
>>> Right now I have this (below), which works, but uses "withDefault." I
>>> want to avoid this because the default values are meaningless and I want to
>>> clearly and fundamentally avoid any possible situation where a Nothing gets
>>> through to the "else" part
>>>
>>> forecastProtected : Maybe Float -> Maybe Float -> Maybe Float -> (List
>>> Int) -> List Float
>>> forecastProtected q d b months =
>>>   if List.any (\m -> m == Nothing) [q, e, b] then []
>>>   else
>>>     forecast
>>>       (withDefault 0 q)
>>>       (withDefault 0 d)
>>>       (withDefault 0 b)
>>>       months
>>>
>>>
>>>  I am hoping to do something like this:
>>> forecastProtected : Maybe Float -> Maybe Float -> Maybe Float -> (List
>>> Int) -> List Float
>>> forecastProtected q d b months =
>>>   let
>>>     params = {q = q, d = d, b = b}
>>>   in
>>>     case params of
>>>       { Just qF, Just dF, Just bF } -> forecast qF dF bF months
>>>       { Maybe, Maybe, Maybe } -> []
>>>
>>> which more clearly shows what I am trying to achieve. Could someone
>>> point me to the appropriate syntax for this? Also the 'F' in qF, dF, and bF
>>> are "Float" to avoid masking of variables (not sure how this happens in
>>> elm); it would be best if I could avoid this complication too.
>>>
>>> Thanks everyone for all your help as I'm getting started!
>>> Austin
>>>
>>>
>>> --
>>> 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...@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.

Reply via email to