LISP - Paket
Dalam istilah umum bahasa pemrograman, sebuah paket dirancang untuk menyediakan cara untuk memisahkan satu set nama dari yang lain. Simbol yang dideklarasikan dalam satu paket tidak akan bertentangan dengan simbol yang sama yang dideklarasikan di paket lainnya. Dengan cara ini paket mengurangi konflik penamaan antara modul kode independen.
Pembaca LISP menyimpan tabel semua simbol yang ditemukannya. Ketika menemukan urutan karakter baru, itu membuat simbol baru dan disimpan di tabel simbol. Tabel ini disebut paket.
Paket saat ini dirujuk oleh variabel khusus * paket *.
Ada dua paket standar di LISP -
common-lisp - ini berisi simbol untuk semua fungsi dan variabel yang ditentukan.
common-lisp-user- menggunakan paket common-lisp dan semua paket lainnya dengan alat pengeditan dan debugging; singkatnya disebut cl-user
Fungsi Paket di LISP
Tabel berikut menyediakan fungsi yang paling umum digunakan untuk membuat, menggunakan, dan memanipulasi paket -
Sr.No. | Fungsi dan Deskripsi |
---|---|
1 | make-package package-name & key: nicknames: use Ini membuat dan mengembalikan paket baru dengan nama paket yang ditentukan. |
2 | in-package package-name & key: nicknames: use Membuat paket saat ini. |
3 | in-package nama Makro ini menyebabkan * paket * disetel ke nama paket nama, yang harus berupa simbol atau string. |
4 | find-package nama Ini mencari paket. Paket dengan nama atau julukan itu dikembalikan; jika tidak ada paket seperti itu, find-package mengembalikan nil. |
5 | rename-package paket nama baru & nama panggilan baru opsional itu mengganti nama paket. |
6 | list-all-packages Fungsi ini mengembalikan daftar semua paket yang saat ini ada di sistem Lisp. |
7 | delete-package paket Ini menghapus sebuah paket. |
Membuat Paket LISP
Itu defpackagefungsi digunakan untuk membuat paket yang ditentukan pengguna. Ini memiliki sintaks berikut -
(defpackage :package-name
(:use :common-lisp ...)
(:export :symbol1 :symbol2 ...)
)
Dimana,
nama-paket adalah nama paket.
Kata kunci: use menentukan paket yang dibutuhkan paket ini, yaitu paket yang mendefinisikan fungsi yang digunakan oleh kode dalam paket ini.
Kata kunci: export menentukan simbol yang berada di luar paket ini.
Itu make-packagefungsi juga digunakan untuk membuat paket. Sintaks untuk fungsi ini adalah -
make-package package-name &key :nicknames :use
Argumen dan kata kunci memiliki arti yang sama seperti sebelumnya.
Menggunakan Package
Setelah Anda membuat paket, Anda dapat menggunakan kode dalam paket ini, dengan menjadikannya paket saat ini. Ituin-package makro membuat paket terkini di lingkungan.
Contoh
Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.
(make-package :tom)
(make-package :dick)
(make-package :harry)
(in-package tom)
(defun hello ()
(write-line "Hello! This is Tom's Tutorials Point")
)
(hello)
(in-package dick)
(defun hello ()
(write-line "Hello! This is Dick's Tutorials Point")
)
(hello)
(in-package harry)
(defun hello ()
(write-line "Hello! This is Harry's Tutorials Point")
)
(hello)
(in-package tom)
(hello)
(in-package dick)
(hello)
(in-package harry)
(hello)
Saat Anda menjalankan kode, ia mengembalikan hasil berikut -
Hello! This is Tom's Tutorials Point
Hello! This is Dick's Tutorials Point
Hello! This is Harry's Tutorials Point
Menghapus Paket
Itu delete-packagemakro memungkinkan Anda untuk menghapus sebuah paket. Contoh berikut menunjukkan ini -
Contoh
Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.
(make-package :tom)
(make-package :dick)
(make-package :harry)
(in-package tom)
(defun hello ()
(write-line "Hello! This is Tom's Tutorials Point")
)
(in-package dick)
(defun hello ()
(write-line "Hello! This is Dick's Tutorials Point")
)
(in-package harry)
(defun hello ()
(write-line "Hello! This is Harry's Tutorials Point")
)
(in-package tom)
(hello)
(in-package dick)
(hello)
(in-package harry)
(hello)
(delete-package tom)
(in-package tom)
(hello)
Saat Anda menjalankan kode, ia mengembalikan hasil berikut -
Hello! This is Tom's Tutorials Point
Hello! This is Dick's Tutorials Point
Hello! This is Harry's Tutorials Point
*** - EVAL: variable TOM has no value