La funzione uncurry
funziona solo per le funzioni di assunzione di due argomenti:Haskell ha funzioni/tuple variadiche?
uncurry :: (a -> b -> c) -> (a, b) -> c
Se voglio uncurry funzioni con un numero arbitrario di argomenti, ho potuto solo scrivere funzioni distinte:
uncurry2 f (a, b) = f a b
uncurry3 f (a, b, c) = f a b c
uncurry4 f (a, b, c, d) = f a b c d
uncurry5 f (a, b, c, d, e) = f a b c d e
Ma questo ottiene noioso rapidamente. C'è un modo per generalizzare questo, quindi devo solo scrivere una funzione?
Non in questo modo, ma in ogni caso, perché vuoi farlo? Nella mia esperienza ci sono pochissimi casi in cui hai bisogno di qualcosa di più che uncurry2 –
@Paul: Nessun motivo specifico, ma non appena vedo qualche tipo di schema ripetuto, mi chiedo come posso generalizzare e astrarre da esso. – fredoverflow