Why must named functions be in a separate file in hugs?

1k Views Asked by At

In Haskell in 5 steps the factorial function is defined as follows:

let fac n = if n == 0 then 1 else n * fac (n-1)

But for hugs, it says that fac needs to be in fac.h. Can anyone explain why this is the case - missing the ability to define named functions seems like a massive limitation for an interpreter?

2

There are 2 best solutions below

0
On BEST ANSWER

The basic answer as far as I can tell is that the Hugs interactive toplevel is essentially an expression parser, and function/data definitions are not expressions. Your example actually would work if you made it an expression and wrote let fac n = if n == 0 then 1 else n * fac (n-1) in fac 19. Adding support for this would be a pretty big effort, and apparently the Hugs implementors thought that it was good enough to require function/data definitions to be in files.

2
On

Hugs misses the ability to define any named functions (recursive or not). It also misses the ability to define data types.