# [Haskell], 26 bytes <!-- language-all: lang-hs --> f(x:y)=([x],0)*>span(/=x)y [Try it online!][TIO-kphvw9hv] [Haskell]: https://www.haskell.org/ [TIO-kphvw9hv]: https://tio.run/##lZTJbsIwEIbvfYo59JBUps3iLKDCqZceqj5A5EMkihoVEgQc4OlTexbSLC2qZEVk5vvt3zMTPsvj18d221a7fXM4wUt5Kh/fmrqp1uB5zyvfbzfeeXHxl15xNirwH1bHfVl7T8uzf2l3ZVXDYgGv7@D5d/i2hHVzB7A/VPUJ7mEDRajArrmB2QyKIjQKQ3Nj@pi2MQWaMffmSD3EEgWZAvtMmHQBR2JoAOcK7AocQXDuSAkN4Ax90v72@IglHHZCSQyEdrMUzdNNg07by7gdggl5hERsM7Q9epBycdJp@@mxhwhXjAbIRtjZ4CR7kPTYCV0xRTrFpbGGUeeHEbbUh8b1p4OpZRp/BKOmTFJ/dCpHIqeBQSX9uM7Gj3nLeTxu0YMjYtyfGpphVamRNA0aIzKrPdad9Qs9HniqRoJ4Io2jq9FTd028jeP3Mt3WUGoeS63p9nNxx2Ug412vOx23@5bSTH37Gp8kTVAUizqSeUj5mP6/xH@U4/KSu0jY65ymsjLZjyqYmvYb "Haskell – Try It Online" ---- # [Haskell], 27 bytes <!-- language-all: lang-hs --> f(x:y)=([x],[])<>span(/=x)y [Try it online!][TIO-kphv5fzy] [Haskell]: https://www.haskell.org/ [TIO-kphv5fzy]: https://tio.run/##lZTJbsIwEIbvfYo59JBIps3iLCDg1EsPVR8g8iESRY0KCQIO8PSpPQtplhZVsiIy8/3275kJn@Xp62O3a6v9oTme4aU8l09vTd1UG/C85dr32613WVz9lVdcjCqMv1yfDmXtPa8u/rXdl1UNiwW8voPnP@DbCjbNA8DhWNVneIQtFKECu@YGZjMoitAoDM2N6WPaxhRoxtybI/UQSxRkCuwzYdIFHImhAZwrsCtwBMG5IyU0gDP0Sfvb4yOWcNgJJTEQ2s1SNE83DTptL@N2CCbkERKxzdD26EHKxUmn7afHHiJcMRogG2Fng5PsQdJjJ3TFFOkUl8YaRp0fRthSHxrXnw6mlmn8EYyaMkn90akciZwGBpX04zYbP@Yt5/G4Rw@OiHF/amiGVaVG0jRojMis9lh31i/0eOCpGgniiTSOrkZP3TXxPo7fy3RbQ6l5LLWm28/FHZeBjHe97nTc7ntKM/Xta3ySNEFRLOpI5iHlY/r/Ev9RjstL7iJhb3OayspkP6pgatpv "Haskell – Try It Online" Shortens [Zgarb's OG solution](https://codegolf.meta.stackexchange.com/a/10668/20260) f(x:y)|(a,b)<-span(/=x)y=(x:a,b) using the later [addition of `<>`into base Haskell in 8.4.1][1] with the [Semigroup Monoid proposal](https://prime.haskell.org/wiki/Libraries/Proposals/SemigroupMonoid) in 2018. On tuples, it let us concatenate corresponding elements: (a, b) <> (c, d) = (a++c, b++d) letting us prepend an `x` to the first entry with `([x],[])<>`. A variant instead uses Applicative for one byte longer: **28 bytes** <!-- language-all: lang-hs --> f(x:y)=([x],id)<*>span(/=x)y [Try it online!][TIO-kphv1zc3] [Haskell]: https://www.haskell.org/ [TIO-kphv1zc3]: https://tio.run/##lZS5bsJAEIZ7nmKKFHa0JD7WFwKqNCmiPIDlwhJBsQI2Agp4emd3DhwfCYq0svDM9@/@OzPmszx9fex2bbU/NMczvJTn8umtqZtqA46zXLtuu3Uui6u7cvJLoaqNu3xcnw5l7TyvLu613ZdVDYsFvL6D487wbQWbZgZwOFb1GR5gC7mvwKysmI7CfA557hcKQ1kxwLSJKdCM2TdL6iEWKUgUmGfEpA1YEkMDOFVglmcJglNLSmgAJ@iT9jfHByzhsBVKYiA0m8Vonm7qddpexu7gTcgDJEKToe3Rg5SLk1bbT489BLhCNEA2/M4GJ9mDpMdO6Iox0jEujTUMOj@MsKU@NK4/HUwt0/jDGzVlkvqjUykSKQ0MKunHbTZ@zFvK43GPHhwR4v7U0ASrSo2kadAYkVntsfasX@jxwFM1IsQjaRxdjZ66a@J9HL@X6bb6UvNQak23z8Qdl4GMd73udNzue8rJb1/jk6QRikJRBzIPMR/T/5f4j3JcXnIXCHub01hWIvtRBeOi/QY "Haskell – Try It Online" Unfortunately, the functor tuple instance only lets us act on the second entry: `(x:)<$>(a,b)` gives us `(a,x:b)`. [1]: https://codegolf.stackexchange.com/a/177774/20260