Here you can primarily find functions for dealing with the "patp" and
"patq" phonetic bases used by Urbit. The @p encoding is used for naming
ships, while the @q encoding is used for arbitrary data; they each uniquely
represent an underlying natural number (or atom) in a memorable and
pronounceable fashion.
The @p encoding is an obfuscated representation of an underlying atom, in
particular, hence the "ob" in the library's name.
The Urbit.Ob module exposes two families of functions, patp and
fromPatp, and then patq and fromPatq, for converting between
representations. You can also render a Patp or Patq value as Text via
the renderPatp and renderPatq functions, or parse them from Text via
parsePatp and parsePatq.
Since @p values represent ships, some utilities for dealing with ships are
also exposed. The clan and sein functions are useful for determining a
ship's class and (default) parent, respectively.
Some quick examples:
import qualified Urbit.Ob as Ob
let nidsut = Ob.patp 15663360
let marzod = Ob.patq (Ob.fromPatp nidsut)
Ob.renderPatp nidsut
"~nidsut-tomdun"
Ob.renderPatq marzod
"~mun-marzod"
Ob.fromPatp nidsut
15663360
Ob.parsePatp "~nidsut-tomdun"
Right ~nidsut-tomdun