Casebash
Casebash

Reputation: 118962

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

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?

Upvotes: 0

Views: 1014

Answers (2)

Chuck
Chuck

Reputation: 237080

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.

Upvotes: 2

sepp2k
sepp2k

Reputation: 370377

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

Upvotes: 2

Related Questions