No sé cómo dar una respuesta mucho más útil que el comentario de Zhen Lin, pero lo intentaré.
Las categorías son cosas muy generales, y los programas son cosas muy variadas, así que hay muchas, muchas maneras de "codificar" (yo diría "describir") un programa como una categoría. Siempre que se pueda definir un conjunto de objetos que son relevantes para el programa de alguna manera, y un conjunto de morfismos entre aquellos objetos que se cierran bajo composición (y la composición es asociativa), has descrito el programa como una categoría.
Los objetos podrían ser posibles entradas y salidas del programa, y los morfismos podrían representar la forma en que el programa asigna las entradas a las salidas. O bien, supongo que los estados del programa podrían ser los objetos y los morfismos las transiciones permitidas entre esos estados. (El requisito de un morfismo de identidad significa que a un estado se le permitiría la transición a sí mismo, lo que podría ser un poco impar).
Sí, una vez que has descrito tu programa como una categoría, puedes definir funtores entre ella y otras categorías (que pueden ser otros programas), pero tampoco hay una forma "estándar" de hacerlo que yo haya visto. Los objetos y morfismos (y funtores) que elijas influirán en qué tipo de cosas adicionales puedes modelar sobre tu programa una vez que lo hayas descrito como una categoría.
(Tenga en cuenta que he hablado de describir un programa como categoría, ya que parecía que eso era lo que preguntabas, pero ahora no estoy tan seguro. También podría describir una programación idioma como una categoría, en cuyo caso su programa sería simplemente uno de los objetos (o morfismos) de esa categoría).
Editar : Sólo me gustaría añadir que si se trata de describir un programa como un objeto o morfismo en una categoría para un lenguaje de programación (como una función en Hask ), entonces el término "codificar" suena aún menos apropiado. Los objetos en la teoría de las categorías son bastante opacos: no hay manera de examinarlos, excepto para decir cosas sobre los morfismos que se aplican a ellos.
También debo mencionar para completar (aunque sé muy poco al respecto) que cualquier categoría con suficiente estructura soporta un lógica interna que incluso puede ser tan potente como el cálculo lambda (que es Turing-completo); así que existe este sentido (¡muy diferente!) en el que uno puede tener "programas" con respecto a una categoría.