lean-ja / lean-ja/lean-by-example
`[inline]` だと短絡評価できるのに `[always_inline]` だとできないという例
Open
Nobody has claimed this yet.
コード例
要調査
- Dominant language
- Lean
- Stars
- 188
- Forks
- 15
- Avg merge
- 9h 8m
- Merged PRs (30d)
- 6
Description
なんでやねん
@[inline]
def Bool.And₁ : Bool → Bool → Bool
| true, true => true
| _, _ => false
-- short circuiting!!
/-- info: false -/
#guard_msgs in
#eval Bool.And₁ false (dbg_trace "hello"; true)
@[always_inline]
def Bool.And₂ : Bool → Bool → Bool
| true, true => true
| _, _ => false
-- **not** short circuiting!!
/--
info: hello
---
info: false
-/
#guard_msgs in
#eval Bool.And₂ false (dbg_trace "hello"; true)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the inline and always_inline definitions and their accompanying #guard_msgs examples in the issue body. Reproduce both evaluations, compare the emitted messages, and determine what explains the differing short-circuit behavior; done means the behavior is understood and the issue has a clear conclusion.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100