---
name: "Longident"
section: "3o"
platform: "linux"
package: "ocaml"
version: "5.5.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Longident"
---

# Longident(3o)

Long identifiers, used in parsetree.

## NAME

Longident - Long identifiers, used in parsetree.

## Module

Module   Longident

## Documentation

Module **Longident**\
  :  **sig end**

Long identifiers, used in parsetree.

Warning: this module is unstable and part of **Compiler\_libs** .

To print a longident, see  **Pprintast.longident** , using **Format.asprintf** to convert to a string.

*type t* =\
  \| Lident **of** **string**\
  \| Ldot **of** **t Location.loc \* string Location.loc**\
  \| Lapply **of** **t Location.loc \* t Location.loc**

*val same* :  **t -\> t -\> bool**

**same t t'** compares the longidents  **t** and  **t'** without taking locations into account.

*val flatten* :  **t -\> string list**

*val unflatten* :  **string list -\> t option**

For a non-empty list  **l** ,  **unflatten l** is  **Some lid** where  **lid** is the long identifier created by concatenating the elements of  **l** with  **Ldot** . **unflatten \[\]** is  **None** .

*val last* :  **t -\> string**

*val parse* :  **string -\> t**

**Deprecated.** this function may misparse its input, use "Parse.longident" or "Longident.unflatten"

This function is broken on identifiers that are not just "Word.Word.word"; for example, it returns incorrect results on infix operators and extended module paths.

If you want to generate long identifiers that are a list of dot-separated identifiers, the function  **Longident.unflatten** is safer and faster. **Longident.unflatten** is available since OCaml 4.06.0.

If you want to parse any identifier correctly, use the long-identifiers functions from the  **Parse** module, in particular  **Parse.longident** . They are available since OCaml 4.11, and also provide proper input-location support.
