
I'm sure you've answered my question, but I'm too much of a beginner to
fathom it. If you could explain, that would be great, but I could also go
off and try to grok it myself. Again, thanks.
On Fri, Mar 26, 2021 at 12:09 AM Ignat Insarov
Hello Galaxy Being!
You can do this:
module Y where
substitute ∷ (α → Bool) → (α, [α]) → [α] substitute predicate = \ thing → case thing of (_, [ ]) → [ ] (substitution, (x: xs)) → let remainder = substitute predicate (substitution, xs) in if predicate x then substitution: remainder else x: remainder
It is even nicer since we can factor out the common part of the `if` block into a `let … in`. You can also enable the `LambdaCase` language extension and it will let you elide the `thing` thing.
I am not sure if this is what your question is really about… In principle, of course Haskell has currying. Actually, functions are usually written in curried form in Haskell. Please let me know if I missed the substance of your question!