[GHC] #14367: Lazy evaluation can be invalidated
GHC
ghc-devs at haskell.org
Thu Oct 19 12:00:25 UTC 2017
#14367: Lazy evaluation can be invalidated
-------------------------------------+-------------------------------------
Reporter: vanto | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: Other | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by AntC):
Replying to [ticket:14367 vanto]:
> Evaluating arguments only if and when they are needed. This is the first
principle of lazy evaluation.\\
> Example:\\
> ...\\
> These results are all correct because the evaluated expression
(function) is non-strict.\\
No, not an accurate statement. Those examples are ''both'' type-correct
''and'' evaluate a non-strict function.
>
> The same expression below with a changed argument:\\
> ...\\
That example is not type-correct.
> Here the error message should not have priority. \\
Type errors ''always'' "have priority" before evaluating an expression.
(Except if you set `-fdefer-type-errors` or `-fdefer-typed-holes`, as
@goldfire correctly points out.)
GHC is chiefly a compiler, not an interpreter. Haskell is a statically-
typed language. Compiled code would be unusable in general if GHC accepted
type-incorrect code, then delayed until run-time to see whether it needed
to evaluate some type-incorrect expression. Programs would run ok today
but crash tomorrow.
I think you'll find every statically-typed compiled language behaves like
that. It really has nothing to do with lazy evaluation.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14367#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list