Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tip Sistemi

BERK, güçlü statik tipleme ile güvenli ve tip çıkarımı ile pratik bir dil sunar. Rust ve TypeScript'ten ilham alan modern bir tip sistemi.

Temel Tipler

Sayısal Tipler

TürkçeEnglishBoyutAralık
sayı8int88-bit-128 to 127
sayı16int1616-bit-32,768 to 32,767
sayıint32-bit-2³¹ to 2³¹-1
sayı64int6464-bit-2⁶³ to 2⁶³-1
usayı8uint88-bit0 to 255
usayı16uint1616-bit0 to 65,535
usayıuint32-bit0 to 2³²-1
kesir32float3232-bitIEEE 754
kesirfloat64-bitIEEE 754
değişken x: sayı = 42
değişken y: kesir = 3.14
değişken byte: sayı8 = 127

Boolean ve Karakter Tipleri

değişken aktif: mantık = doğru
değişken harf: karakter = 'A'

Tip Çıkarımı (Type Inference)

BERK derleyicisi tipleri otomatik çıkarabilir:

// Tip belirtilmemiş ama derleyici çıkarıyor
değişken x = 42          // sayı
değişken y = 3.14        // kesir
değişken isim = "Ali"    // metin
değişken liste = [1,2,3] // Dizi<sayı>

Koleksiyon Tipleri

Diziler (Arrays)

// Sabit boyutlu dizi
değişken sayılar: [sayı; 5] = [1, 2, 3, 4, 5]

// Dinamik dizi
değişken liste: Dizi<sayı> = Dizi::yeni()
liste.ekle(42)

Vektörler

değişken vec = Vec::from([1, 2, 3, 4])
vec.push(5)
yazdır(vec.len())  // 5

Hash Map

kullan koleksiyonlar::HashMap;

değişken yaşlar = HashMap::yeni()
yaşlar.ekle("Ali", 25)
yaşlar.ekle("Ayşe", 30)

Yapılar (Structs)

yapı Nokta yap
    x: kesir,
    y: kesir
son

// Kullanım
değişken p = Nokta { x: 1.0, y: 2.0 }
yazdır(p.x)  // 1.0

Tuple Yapılar

yapı Renkli(sayı, sayı, sayı);  // RGB

değişken kırmızı = Renkli(255, 0, 0)
yazdır(kırmızı.0)  // 255

Enum Tipleri

enum Yön yap
    Kuzey,
    Güney,
    Doğu,
    Batı
son

değişken hareket = Yön::Kuzey

Veri Taşıyan Enumlar

enum Mesaj yap
    Çık,
    Taşı(sayı, sayı),
    Yaz(metin),
    RenkDeğiştir(sayı, sayı, sayı)
son

Seçenek ve Sonuç Tipleri

Seçenek (Option)

fonksiyon böl(a: kesir, b: kesir) -> Seçenek<kesir> yap
    eğer b == 0.0 yap
        dön Hiçbiri
    son
    dön Bir(a / b)
son

Sonuç (Result)

fonksiyon dosya_oku(yol: metin) -> Sonuç<metin, Hata> yap
    eğer yol == "" yap
        dön Hata("Boş yol")
    son
    dön Tamam(içerik)
son

Generic Tipler

yapı Kutu<T> yap
    değer: T
son

fonksiyon yeni_kutu<T>(değer: T) -> Kutu<T> yap
    dön Kutu { değer: değer }
son

// Kullanım
değişken sayı_kutusu = yeni_kutu(42)
değişken metin_kutusu = yeni_kutu("merhaba")

Trait Sistemi (Interfaces)

trait Yazdırılabilir yap
    fonksiyon yazdır(self)
son

yapı Kişi yap
    isim: metin
son

uygula Yazdırılabilir için Kişi yap
    fonksiyon yazdır(self) yap
        yazdır("Kişi: " + self.isim)
    son
son

Tip Dönüşümleri

Açık Dönüşüm (Casting)

değişken x: sayı = 42
değişken y: kesir = kayıt(kesir, x)
değişken z: sayı8 = kayıt(sayı8, x)

Güvenli Dönüşüm

değişken metin1 = "42"
değişken sayı1 = metin1.sayıya_çevir()  // Sonuç<sayı, Hata>

eşleştir sayı1 yap
    Tamam(n) => yazdır(n),
    Hata(e) => yazdır("Hata: " + e)
son

Tip Takma Adları (Type Aliases)

tip Sonuç<T> = Sonuç<T, metin>
tip Nokta2D = (kesir, kesir)
tip Matris3x3 = [[kesir; 3]; 3]

Pattern Matching

eşleştir değer yap
    0 => yazdır("Sıfır"),
    1..10 => yazdır("Bir ile dokuz arası"),
    x eğer x % 2 == 0 => yazdır("Çift sayı"),
    _ => yazdır("Diğer")
son

Özet

  • ✅ Güçlü statik tipleme
  • ✅ Tip çıkarımı
  • ✅ Generic'ler
  • ✅ Trait sistemi
  • ✅ Pattern matching
  • ✅ Null güvenliği (Seçenek)
  • ✅ Hata yönetimi (Sonuç)