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