Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
C
compiler
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 16
    • Issues 16
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
  • clean-compiler-and-rts
  • compiler
  • Issues
  • #83

Closed
Open
Opened Nov 19, 2020 by Camil Staps@cstaps🚀Developer

Faulty strictness analysis?

The program below aborts with 1, whereas I would expect 2 because x does not need to be evaluated in f. The same problem occurs when using guards. When f is exported the compiler gives a warning that not all derived strictness is exported and the first parameter is strict.

This happens on the current master and itask compilers.

f :: a -> a
f x = if False x (abort "2\n")

Start = f (abort "1\n")
To upload designs, you'll need to enable LFS and have admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: clean-compiler-and-rts/compiler#83