Looks like I was getting pretty close to what I needed, just had an 
infinite type issue I couldn't figure out.

Joey: Yep that is what I am going for, though interestingly your solution 
cuts off the final group after the last matching element.

John: Perfect, that works exactly as I need.

Thanks both, really helpful :)

On Sunday, 13 November 2016 02:36:56 UTC, John Kelly wrote:
>
> import Html exposing (text)
>
>
>
>
> splitWith fn list = 
>   List.foldr 
>       (\next total -> 
>         case total of 
>           [] -> 
>             if fn next then 
>               []
>             else
>               [next] :: total
>           first :: rest -> 
>             if fn next then 
>               [] :: total
>             else
>               (next :: first) :: rest
>       )
>       []
>       list
>
>
>
>
> main =
>   [1,2,3]
>     |> splitWith ((==) 2)
>     |> toString 
>     |> text
>
> Hey! Just wanted to post my solution (let me know if there is a bug!). 
> Thanks for the fun problem :)
>
>
>
> On Saturday, November 12, 2016 at 5:46:53 PM UTC-8, Laurence Roberts wrote:
>>
>> How would you write this function:
>>
>> splitWith : (a -> Bool) -> List a -> List (List a)
>>
>> such that this is true:
>>
>> splitWith (\x -> x == 2) [1,2,3,4,2,5,6,7] == [[1],[3,4],[5,6,7]]
>>
>> It's clear how to would do it in non-FP but I'm struggling to visualise 
>> it in FP, it's been a little while since I've done any.
>>
>

-- 
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.

Reply via email to