Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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


I love that example, but it does depend upon some pretty arcane features in Haskell's type inference engine.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: