apply
isn't very useful in Haskell, since you can't give a type to the function. As you see in your FnOrDat, you're essentially embedding a Lisp language into Haskell as an EDSL to force something through.
asking for a general-purpose apply basically like asking for a function that can manipulate an arbitrary-length tuple?
Exactly. You can come up with type class instances for certain useful combinations of types, but there's just not really a need or use for a general variadic apply
.
As a side note, you should consider upgrading to GHC and the Haskell Platform, instead of the obsolete Hugs system, since you're missing out on most of libraries, tools and language features developed in the last 10 years.