22
Jan

Common Lisp’ten Eğitime ‘Sözde’ Destek

   Posted by: Emre Sevinc   in General, Lisp, Programlama

Biliyorum, Boran bundan hoşlanmayacak. Sadece Common Lisp ve Internet programlamaya dair bir örnek olsun diye yazıyorum (ne yapayım, CLIM ile hazırlanmış last.fm istemcisi biraz “out-of-date” dolayısı ile “out-of-order” olmuş, son aylarda ilgili protokol değişince! Onunla uğraşmak daha zor geldi.)

Önce trivial-http’yi istediğimizi belirtelim:

CL-USER> (asdf:oos 'asdf:load-op :trivial-http)
; loading system definition from #P"/home/fz/.sbcl/systems/trivial-http.asd"
; into #<PACKAGE "ASDF4455">
; registering #<SYSTEM TRIVIAL-HTTP {911FEE9}> as TRIVIAL-HTTP
; loading system definition from #P"/home/fz/.sbcl/systems/trivial-sockets.asd"
; into #<PACKAGE "ASDF4457">
; registering #<SYSTEM TRIVIAL-SOCKETS {92BDC69}> as TRIVIAL-SOCKETS
NIL

Sonra da ilgili fonksiyonu yazalım Emacs ile egitime-sozde-destek.lisp dosyamızın içine:

(defun egitime-sozde-destek (url)
  (let ((response-stream (caddr (thttp:http-get url))))
    (do ((line (read-line response-stream nil)
	       (read-line response-stream nil)))
	((null line) t)
      (format t "~A~%" line))))

Ya da bazılarına daha anlaşılır gelen LOOP ile:

(defun egitime-sozde-destek (url)
  (let ((response-stream (caddr (thttp:http-get url))))
    (loop for line = (read-line response-stream nil)
	  do  (format t "~A~%" line)
	  while (not (null line)))))

Tabii nedense CADDR bazılarının gözünü korkutuyor, (CAR (CDR (CDR … ))) olarak algılanmayabiliyor. Onun da kolayı var:

(defun egitime-sozde-destek (url)
  (let ((response-stream (first (rest (rest (thttp:http-get url))))))
    (loop for line = (read-line response-stream nil)
	  do  (format t "~A~%" line)
	  while (not (null line)))))

İstediğimiz alternatifi Emacs içinden derledikten sonra Lisp komut satırından çalıştırabiliriz:

CL-USER> (egitime-sozde-destek "http://www.ntvmsnbc.com/modules/egitimedestek/")

Bu Common Lisp nasıl bir şey ki acep diyenler Software Development dergisinin 16. Annual Jolt Product Excellence & Productivity Awards değerlendirmesinde Teknik Kitaplar kategorisinde ödüle aday gösterilen Practical Common Lisp kitabına bakabilirler.

Benzer Yazılar / Similar Posts:

This entry was posted on Sunday, January 22nd, 2006 at 3:54 pm and is filed under General, Lisp, Programlama. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a reply

Name (*)
Mail (will not be published) (*)
URI
Comment