| import Lean.Syntax | |
| open Lean | |
| private partial def onlyIdent' : Syntax → Bool | |
| | .node _ _ args => | |
| let nonEmpty := args.filter (!isEmpty ·) | |
| if h : nonEmpty.size = 1 then onlyIdent' nonEmpty[0] | |
| else false | |
| | .ident .. => true | |
| | _ => false | |
| where | |
| isEmpty : Syntax → Bool | |
| | .node _ _ xs => | |
| xs.all isEmpty | |
| | _ => false | |
| partial def onlyIdent'' : Syntax → Bool | |
| | .node _ _ args => | |
| let nonEmpty := args.filter (!isEmpty () ·) | |
| if h : nonEmpty.size = 1 then onlyIdent'' nonEmpty[0] | |
| else false | |
| | .ident .. => true | |
| | _ => false | |
| where | |
| isEmpty : Unit → Syntax → Bool | |
| | _, .node _ _ xs => | |
| xs.all (isEmpty ()) | |
| | _, _ => false |