LISP - İşlevler

Bir işlev, birlikte bir görevi yerine getiren bir grup deyimdir.

Kodunuzu ayrı işlevlere bölebilirsiniz. Kodunuzu farklı işlevler arasında nasıl böleceğiniz size bağlıdır, ancak mantıksal olarak bölme genellikle her işlevin belirli bir görevi yerine getirmesidir.

LISP'de Fonksiyonları Tanımlama

Adlı makro defunfonksiyonları tanımlamak için kullanılır. defun makronun üç bağımsız değişkene ihtiyacı vardır -

  • Fonksiyonun adı
  • Fonksiyonun parametreleri
  • İşlevin gövdesi

Defun için sözdizimi -

(defun name (parameter-list) "Optional documentation string." body)

Konsepti basit örneklerle gösterelim.

örnek 1

Dört sayının ortalamasını basacak averagenum adlı bir fonksiyon yazalım . Bu numaraları parametre olarak göndereceğiz.

Main.lisp adlı yeni bir kaynak kod dosyası oluşturun ve içine aşağıdaki kodu yazın.

(defun averagenum (n1 n2 n3 n4)
   (/ ( + n1 n2 n3 n4) 4)
)
(write(averagenum 10 20 30 40))

Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -

25

Örnek 2

Çemberin yarıçapı argüman olarak verildiğinde çemberin alanını hesaplayacak bir fonksiyon tanımlayalım ve çağıralım.

Main.lisp adlı yeni bir kaynak kod dosyası oluşturun ve içine aşağıdaki kodu yazın.

(defun area-circle(rad)
   "Calculates area of a circle with given radius"
   (terpri)
   (format t "Radius: ~5f" rad)
   (format t "~%Area: ~10f" (* 3.141592 rad rad))
)
(area-circle 10)

Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -

Radius:  10.0
Area:   314.1592

Lütfen unutmayın -

  • Parametre olarak boş bir liste sağlayabilirsiniz, bu, işlevin argüman almadığı, listenin boş olduğu ve () olarak yazılacağı anlamına gelir.

  • LISP ayrıca isteğe bağlı, çoklu ve anahtar sözcük argümanlarına da izin verir.

  • Dokümantasyon dizisi, işlevin amacını açıklar. İşlevin adı ile ilişkilendirilir ve şu kullanılarak elde edilebilir:documentation işlevi.

  • İşlevin gövdesi, herhangi bir sayıda Lisp ifadesinden oluşabilir.

  • Gövdedeki son ifadenin değeri, işlevin değeri olarak döndürülür.

  • Ayrıca, işlevden bir değer döndürebilirsiniz. return-from özel operatör.

Yukarıdaki kavramları kısaca tartışalım. Ayrıntıları bulmak için aşağıdaki bağlantıları tıklayın -

  • Opsiyonel Parametreler

  • Dinlenme Parametreleri

  • Anahtar Kelime Parametreleri

  • Bir Fonksiyondan Değerleri Döndürme

  • Lambda İşlevleri

  • Eşleme İşlevleri