letTerm :: [String] -> AParser st TermExt
letTerm ks = do
  l <- asKey letS
  d <- funDef ks <|> letVar ks
  i <- asKey inS
  t <- term ks
  return $ Let d t $ toRange l [] i
letTerm :: [String] -> AParser st TermExt
letTerm ks = do
  l <- asKey letS
  d <- funDef ks <|> letVar ks
  i <- asKey inS
  t <- term ks
  return $ Let d t $ toRange l [] i
letTerm ks = do
  l <- asKey letS
  d <- funDef ks <|> letVar ks
  i <- asKey inS
  t <- term ks
  return $ Let d t $ toRange l [] i