KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
My current approach to define a function of arbitrary arity is below, with A being an accumulator, E being the input argument type, and R being the result type. combine :: A -> E -> A class X r where foo :: A -> E -> r instance X R where foo :: A -> E -> R instance X r => X ( E -> r ) where foo :: A -> E -> E -> r foo ( a :: A ) ( x :: E ) = foo ( a `combine` e :: A ) doFoo = foo emptyA But the minimum arity of foo is 1. The minimum for foo is still A -> E -> R, and doFoo is E -> R. I'd also like to have doFoo :: R. How?
Tags (comma-separated)
Save Edits
Cancel