Paquetes en LISP

Los paquetes son un mecanismo central en el que se usa Common Lisp para administrar diferentes conjuntos de nombres y evitar las colisiones de nombres que pueden ocurrir si varios archivos contienen las mismas variables o funciones con el mismo nombre. Comprender el sistema de paquetes para dividir correctamente nuestro código en varios archivos y luego cargarlos juntos como un solo programa. Los paquetes facilitan que Common Lisp divida el espacio de nombres.

Un paquete es un objeto Lisp como un número, una lista o una string de caracteres. En particular, se define el paquete tipo. Un paquete puede ser el valor de un símbolo, dado como argumento a una función, devuelto por una función, etc.

 Sintaxis para crear un paquete LISP:

(defpackage :package-name
  (:use :Function1 ...)
  (:export :Geek1 :Geek2 ...)
)

Dónde, 

  • defpackage: este paquete se utiliza para crear un usuario para definir el paquete.
  • package-name: Define el nombre del paquete creado por el usuario.
  •  :use: Esta función es utilizada en el código por el paquete.
  • :export: representa un paquete externo.
make-package package-name &key :StudentsNames :use

make-package se utiliza para crear paquetes definidos por el usuario.

 

Ejemplo 1:

Lisp

/* Making a Greeting Package 
(make-package :Ayush_Agarwal)
(make-package :Piyush_Agarwal)
(make-package :Keshav_Agarwal)
(in-package Ayush_Agarwal)
(defun greet () 
  (write-line "This is Ayush_Agarwal ,GoodMorning")
)
(greet)
(in-package Piyush_Agarwal)
(defun greet () 
  (write-line "This is Piyush_Agarwal ,GoodMorning")
)
(greet)
(in-package Keshav_Agarwal)
(defun greet () 
  (write-line "This is Keshav_Agarwal , GoodMorning")
)
  
(in-package Ayush_Agarwal)
(in-package Piyush_Agarwal)
(in-package Keshav_Agarwal)
(greet)

Producción:

 

Para eliminar un paquete LISP usamos la siguiente sintaxis.

Sintaxis:

(delete-package Package-name)
  • delete-package: Nos permite eliminar un paquete definido por el usuario.

Ejemplo 2:

Lisp

/*  Deleting a user defined package in main.lisp-
(make-package :Ayush_Agarwal)
(make-package :Piyush_Agarwal)
(make-package :Keshav_Agarwal)
(in-package Ayush_Agarwal)
(defun greet () 
 (write-line "This is Ayush_Agarwal ,GoodMorning")
)
(greet)
(in-package Piyush_Agarwal)
(defun greet () 
 (write-line "This is Piyush_Agarwal ,GoodMorning")
)
(greet)
(in-package Keshav_Agarwal)
(defun greet () 
 (write-line "This is Keshav_Agarwal ,GoodMorning")
)
(greet)
(in-package Ayush_Agarwal)
(delete-package Ayush_Agarwal)
(greet)
(in-package Piyush_Agarwal)
(greet)
(in-package Keshav_Agarwal)
(greet)

Producción:

 

Publicación traducida automáticamente

Artículo escrito por ayushcoding100 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *