@@ -224,7 +224,7 @@ float = Tok.double
224224idrisStyle :: MonadicParsing m => IdentifierStyle m
225225idrisStyle = IdentifierStyle _styleName _styleStart _styleLetter _styleReserved Hi.Identifier Hi.ReservedIdentifier
226226 where _styleName = "Idris"
227− _styleStart = satisfy isAlpha
227+ _styleStart = satisfy isAlpha <|> oneOf "_"
228228 _styleLetter = satisfy isAlphaNum <|> oneOf "_'."
229229 _styleReserved = HS.fromList ["let", "in", "data", "codata", "record", "Type",
230230 "do", "dsl", "import", "impossible",
@@ -262,7 +262,9 @@ reservedOp name = token $ try $
262262
263263-- | Parses an identifier as a token
264264identifier :: MonadicParsing m => m String
265−identifier = token $ Tok.ident idrisStyle
265+identifier = try(do i <- token $ Tok.ident idrisStyle
266+ when (i == "_") $ unexpected "wildcard"
267+ return i)
266268
267269-- | Parses an identifier with possible namespace as a name
268270iName :: MonadicParsing m => [String] -> m Name