9 Haziran 2007 Cumartesi

scheme eskizlerine devam.

Teach Yourself Scheme in Fixnum Days

kaynağına bakıyorum ordan da bazı karalamalar.

ilk iş merhaba dünya olayına girişmişler=)


;ilk program
(begin
(display "Merhaba, Dünya!")
(newline))

noktalı virgül yorumdur.





Boolean cebir elemanları 1 = #t (true dan), 0= #f (false dan) olarak tanımlanmıştır.

not boolean tersi işlemidir. sıfırsa bir birse sıfıra çevirir.

(not #f)              =>  #t
(
not #t) => #f
(
not "Hello, World!") => #f

boolean? boolean cebiri için tanımlanmış ifade olup olmadığına bakar.

(boolean? #t)              =>  #t
(
boolean? "Hello, World!") => #f

scheme de number kavramı (sayı) bütün tam sayıları (integers), rasyonel sayıları (rationals),
reel (reals) ve karmaşık (complex) sayıları kapsar. bir verinin sayı olup olmadığı number?
sorgusu ile yapılır. diğer veri yapısı sorguları da aşağıdaki gibidir.

(
number? 42) => #t
(
number? #t) => #f


(complex? 2+3i) => #t

(
real? 2+3i) => #f
(
real? 3.1416) => #t
(
real? 22/7) => #t
(
real? 42) => #t

(
rational? 2+3i) => #f
(
rational? 3.1416) => #t
(
rational? 22/7) => #t

(
integer? 22/7) => #f
(
integer? 42) => #t


#b ikili sistemi temsil eder. #b1100 yazdığımızda onluk sisteme dönüştürülür (12).
#o sekizlik, #x ise 16lık hex sistemini temsil eder.

eqv? eşit olup olmadığını test eder.

(eqv? 13 13)
(eqv? 13 #t)
(eqv? 13 #f)
(eqv? 13 13.0)

ayrıca sayılar için = de kullanılır
.

(= 42 42)   =>  #t
(
= 42 #f) -->ERROR!!!
(
= 42 42.0) => #t



(< 3 2) => #f
(
>= 4.5 3) => #t
büyüklük küçüklük ve büyük eşitlik gibi ifadeler normal matematikteki
gibidir.

(< 3 2)    =>  #f
(
>= 4.5 3) => #t

üssünü almak expt ile olur.

(expt 2 3) => 8
(
expt 4 1/2) => 2.0

ilk ifade yoksa - de ilk ifade sıfırmış gibi / de de 1 miş gibi
davranır.

(- 4) => -4
(
/ 4) => 1/4
maksimum ve minumum değerleri bulmak için max ve min
kullanılır.

(max 1 3 4 2 3) =>  4
(
min 1 3 4 2 3) => 1


karakterler /# ön ekiyle tanımlanırlar. #\c , c karakteridir. #\newline ,
#\tab gibi kullanılabilirler. space tuşu #\ veya #\space şeklinde gösterilebilir.

Bir verinin karakter olup olmadığı char? ile sorgulanabilir.

(char? #\c) =>  #t
(char? 1)
=> #f
(char? #\;)
=> #t

karakterlerin karşılaştırılması da
char=?, char, char<=?, char>?,
char>=? şekillerinde yapılabilir.

(char=? #\a #\a)  =>  #t
(char #\a #\b) => #t
(char>=? #\a #\b) => #f

karakterleri büyüklük küçüklük hassasiyeti olmadan karşılaştırma yapmak
için char-ci kullanılır.

(char-ci=? #\a #\A) => #t
(char-ci #\a #\B) => #t

küçük harflerin büyük harflere dönüştürülmesi char-upcase, büyüklerin de küçük
harflere dönüştürülmesi char-downcase komutları ile yapılır.

(char-downcase #\A) => #\a
(char-upcase #\a) => #\A

Semboller değişken tanımlamakta kullanılırlar. sembolleri belirtmek için
quote veya ' kullanılır. (buraları ben de pek anlamadım.)

(quote xyz)
=> xyz

'E

(quote E)

sorgulaması symbol? ile yapılır.

(symbol? 'xyz) => #t
(symbol? 42) => #f


Shceme de sembollerin büyük küçük duyarlılığı yoktur.


(eqv? 'Calorie 'calorie)
=> #t
define ile global değişken ataması yapabiliriz.

(define xyz 5)

xyz
=>  5

set! ile değişkenin değerini değiştirebiliriz.

(set! xyz #\c)

xyz
=> #\c

string harfleri birleştirmeyi sağlar.

(string #\M #\e #\r #\h #\a #\b #\a)
=>"Merhaba"

string-ref ise istenen sıradaki harfi verir.

(define aa "Merhaba ; Merhaba!")

(string-ref aa 9)
=>#\space

(string-ref aa 0)
=>#\M

(string-ref aa 1)
=>#\e
string-append ile ekleme yapabiliriz

string-append aa " mrb." " slm.")
=>"Merhaba ; Merhaba! mrb. slm."

define ve string i birlikte kullanarak da tanımlama yapabiliriz.

(define mrb (string #\M #\e #\r #\h #\a #\b #\a))
mrb
=>"Merhaba"

string-set! ile dizideki karakterlerden istediğimizi değiştirebiliriz.

(string-set! mrb 1 #\i)
mrb
=>"Mirhaba"


matematik dünyasında sonsuz listelerle ilgili bir makale
bir makale buldum.




2 yorum:

Unknown dedi ki...

Merhaba çağdaş :) sözlerime nasıl başlıyacağım bilemiyorum :D

Neyse gerçek manada güzel bir dile benziyor yalnız yine bir dil yine yazım kuralları yine fonksiyonlar teh teeeee... yani gerçekten bir ortak noktada buluşmalarının zamnı geldi bence.


Neyse dille yapılmış basit programlarıda eklersen çok güzel olur ha birde son olarak sormak istediğim " yapılan programlar hangi platformlarda çalışıyor? Sadece linux ?"

kolay gelsin kocum :=)

cagdas dedi ki...

ortak nokta pyton=P abi sanırım çalışması lazım windowsta felan da yani orda clisp yükleyip çalıştırmıştım. kod yazılabiliyorsa çalıştırılabilir de sanırım. aslında örnek kodlara pek bakamamıştım hatırlatığı iyi oldu araştırayım biraz. sana da kolay gelsin =)

 
eXTReMe Tracker