3 ms·
Surprisingly, not really. {-# OPTIONS -fglasgow-exts #-} class BuildList a r | r-> a where build' :: [a] -> a -> r instance BuildL
by knome 13y ago
Surprisingly, not really.
{-# OPTIONS -fglasgow-exts #-}
class BuildList a r | r-> a where
build' :: [a] -> a -> r
instance BuildList a [a] where
build' l x = reverse$ x:l
instance BuildList a r => BuildList a (a->r) where
build' l x y = build'(x:l) y
varargs x = build' [] x
main = print $ ( sum $ varargs 1 2 3 4 5 6 100)
$ ./Test
121
http://okmij.org/ftp/Haskell/vararg-fn.lhs http://okmij.org/ftp/Haskell/vararg-fn.lhs
- tel 13y agoI love that example, but it does depend upon some pretty arcane features in Haskell's type inference engine.