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.
