lean-ja / lean-ja/lean-by-example

`[inline]` だと短絡評価できるのに `[always_inline]` だとできないという例

Open
#1,195 1 comment 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.