Merhaba,

On Oct 15 11:01, Vehbi Sinan Tunalioglu wrote:
> Bu sayfada orneklerle verilmis temel bilgiler mevcut. Sorunuza
> istinaden arattim:
>
> http://psg.com/~dlamkins/sl/chapter11.html

Common Lisp hakkında pek bir bilgim olmamasına rağmen, yukarıdaki
döküman oldukça hoşuma gitti. Scheme tarafında dikte edilen bound-ness
ve defined-ness ayrımına yukarıdaki sayfada da özellikle değinilmiş.
Fakat belgede geçen

  (let (...)
    (defun ...))

şeklindeki bir tanımlamanın Scheme'de karşılığı yok ne yazı ki. Bu
yüzden, o kadar okuduktan sonra bunları kullanımıyacak olmam beni epey
üzdü.

> 1. Yanlislikla workspacede ayni isimli degiskenlerimi kullaniyorsunuz?

Evet, yanlışlıkla değil, tamamen kasıtlı olarak aynı workspace'deki
tanımlamalar üzerinde değişiklik yapıyorum.

> 2. "Destructive" fonksiyonlar mi kullaniyorsunuz?

Sanırım yukarıdaki ifade bu soruya da "Evet." cevabını veriyor.

Scheme için Guile implementasyonunu kullanıyorum ve scm_init_guile() ile
o anki thread içinde Guile'ı başlatıyorum. (Buna Guile moduna girmek
diyelim.) Çağrıda bulunan thread'i sonlandırmadığım sürece, Guile
oturumu benle birlikte yaşıyor. Dolayısı ile, aynı thread'de farklı
Scheme kodları çalıştırmak istediğim için, bunların hepsi aynı Guile
modunda çalışıyor. Bu yöntemin epey güzel yanları var:

+ Her kod çalıştırmak istediğinizde, Guile'ı sıfırdan initialize
  etmenize gerek yok. Varolan Guile mode içinde işleminize devam
  ediyorsunuz.

+ Tüm çalıştırılan Scheme kodları aynı Guile modunda olduğu için,
  birbirlerinin yaptığı değişiklikleri görebiliyorlar. Bu da dolayısı
  ile "globally shared variables" zamazingosuna olanak sağlıyor.

Ama bu son özelliğin bir de gideri var:

- Guile moduna girdikten hemen sonra bir takım genel tanımlamarda
  bulunuyorum. Ve bu tanımların kullanıcı tarafından girilen Scheme
  kodunu çalıştırdıktan sonra (ki kullanıcı kodu bu tanımlamaları
  dolayısı ile değiştiriebiliyor) eski değerlerini geri almalarını
  istiyorum.

Yani demek istediğim o ki, çalıştırılan kodların bazı tanımlamalar
(örneğin yukarıda verdiğim "globally shared variables") üzerinde
değişiklik yapmasına izin verirken, bazılarının da kullanıcı kodunun
çalıştırılması bittikten hemen sonra eski değerlerini geri almasını
istiyorum.

Umarım sorunumu daha açık olarak izah edebilmişimdir.


İyi çalışmalar.

_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap