2010-07-27 10 views
5

Daha önce bir hataya sahip bir Lisp işlevi yazdım. İlk zorluk, işlevi tekrar nasıl görüntüleyeceğimizi belirlemekti. Bu meydan okuma çözüldü. Şimdi NE YAPTIM, yanlış yaptığımı görüyorum, tanımlanmış fonksiyonun içeriğini tüm şeyi yeniden yazmadan değiştirmek isterim?Yeniden yazmadan Lisp işlevini değiştirir misiniz?

Lisp kadar akıllı gibi görünüyor, bunun bir yolu olmalı, sadece ne olduğunu bilmiyorum çünkü dil için oldukça yeniyim. Bu yapılabilir mi?

+0

Sanırım yanlış anlamalarımı görüyorum. Şimdi sadece REPL kodluyorum. Bu yüzden benim sorum bu satırlar boyunca daha fazlaydı (sadece ve örnek): Eğer varsa (bir şey ekleyemem (x) (+ x 5)) ve bunu değiştirmek istedim (+ x 9) herhangi bir kolay yol var mı herşeyi geri almadan bunu yapmak (benim durumumda bc işlevi daha uzun mu?)? ANSWER kodumu REPL yerine bir dosyaya yazmak ve sadece (load-file) ya da bir şey yapmak olduğunu düşünüyorum. – trh178

cevap

3

Sorudan yola çıkarak garip bir düzeniniz olduğunu düşünüyorum. İşlevlerinizi doğrudan REPL'de yazdığınızı gösterir gibi görünüyor. Bunu yapma.

Normal kurulum, bir kaynak dosyayı düzenlediğiniz ve daha sonra üst düzey formları (işlev tanımları gibi) REPL'e gönderen bir IDE'ye (örneğin, Slime ile Slime) sahip olmaktır.

+2

Yep. Buna eklemek için, tüm şeyi sıfırdan yeniden yazmak yerine, onu düzenleyebilir ve yeniden gönderebilirsiniz. Tekrar ihtiyacınız olmayan şeyler için REPL'yi kullanın. –

+0

tam olarak ... bir aptal! (ya da en azından bir tane gibi hissediyorum :), belki de ona sadece 'acemi' diyeceğiz ... haha). bir yüz/avuç içi anı. hızlı yardım için zaten teşekkürler. – trh178

0

Birçok Lisps'te advice işlevi vardır; bu, varolan bir işlevden önce veya sonra ek kod çalıştırmanıza izin verir. Ama yorum doğru, eğer hala öğreniyor ve bir şeyler deniyorsan, neden bir işlevi yeniden yazmadın? Derleme döngüsüyle sizi suçluyorlar mı?

2

Her yararlı REPL bir geçmiş işlevselliğine sahiptir. Girişinizin geçmişinde geriye ve ileriye doğru hareket etmenizi sağlar.

m-p gibi REPL basit tuş vuruşlarında kod yazdığımda önceki kodu geri alır. Bazı IDE'ler, bir Lisp dinleyicisindeki kaynak kodunu m ile bulabilirler. .

Çoğu REPLS'de kademeli olarak geriye doğru da arama yapabilirsiniz. Bir Lisp IDE bu desteklendiğinde -

Eğer giriş bir günlük işlevi salya kullanmak istiyorsanız

..

işlevinden kodu alıyorsanız gibi bazı daha fazla seçenek vardır.