[Test] Builtin Fonksiyonların Kullanım Örnekleri (print, len, toString, parseInt, ...) #102

Open
opened 2026-06-14 22:26:27 +03:00 by saqut · 0 comments
Owner

Giriş (Nedir, Neden Önemli?)

print dışındaki builtin'ler henüz yazılmadı (bkz. "[Fikir] Builtin Fonksiyon Kataloğu", #89), ama bu issue hedefin son hâlini somut kodla göstermek için var — yani "builtin kataloğu" tamamlandığında bu dosyanın aynen bu çıktıyı vermesi beklenir. Erken yazmanın faydası: builtin imzaları (parametre/dönüş tipleri) bu örnekten geriye doğru türetilebilir.


Test Kodu (examples/tests/builtin_fonksiyonlar.sqt)

int main() {
    // print: farklı tiplerde çalışmalı
    print(42);
    print(3.14);
    print("merhaba");
    print(true);

    // toString: sayıdan string'e
    print(toString(123));        // "123"

    // parseInt / parseFloat: string'den sayıya
    print(parseInt("45") + 5);   // 50
    print(parseFloat("2.5") * 2.0); // 5.0

    // len: string ve array uzunluğu
    print(len("saqut"));         // 5

    int[] sayilar = {10, 20, 30};
    print(len(sayilar));         // 3

    return 0;
}

Beklenen Çıktı

42
3.14
merhaba
true
123
50
5.0
5
3

Açık Sorular / Bağlı Fazlar

  • print(true) çıktısı true/false mi yoksa 1/0 mı olmalı? saQut'ta bool ayrı bir tip olduğu için (ADR-010, gizli int↔bool dönüşümü de yok varsayımıyla) true/false daha tutarlı görünüyor — ama bu kararın print'in builtin tablosuna (#89) not edilmesi gerekir.
  • int[] sayilar = {10, 20, 30}; — array literal sözdizimi ({...}) şu an dilde tanımlı mı? Eğer değilse, bu issue aynı zamanda "array literal sözdizimi eklenmeli" şeklinde bir alt-konu açar (Faz 1/parser'a not).
  • parseFloat("2.5") * 2.05.0 çıktısının 5 değil 5.0 (ondalık nokta korunarak) basılması, print'in float biçimlendirmesi için bir kural gerektirir — bu kural baştan netleşmeli (örn. her zaman en az bir ondalık basamak).

İmza/Yorum: Bu dosya, builtin kataloğu (#89) ve minimal stdlib (#90) issue'larının "kabul testi" (acceptance test) gibi düşünülebilir.

### Giriş (Nedir, Neden Önemli?) `print` dışındaki builtin'ler henüz yazılmadı (bkz. "[Fikir] Builtin Fonksiyon Kataloğu", #89), ama bu issue **hedefin son hâlini** somut kodla göstermek için var — yani "builtin kataloğu" tamamlandığında bu dosyanın **aynen bu çıktıyı** vermesi beklenir. Erken yazmanın faydası: builtin imzaları (parametre/dönüş tipleri) bu örnekten geriye doğru türetilebilir. --- ### Test Kodu (`examples/tests/builtin_fonksiyonlar.sqt`) ```c int main() { // print: farklı tiplerde çalışmalı print(42); print(3.14); print("merhaba"); print(true); // toString: sayıdan string'e print(toString(123)); // "123" // parseInt / parseFloat: string'den sayıya print(parseInt("45") + 5); // 50 print(parseFloat("2.5") * 2.0); // 5.0 // len: string ve array uzunluğu print(len("saqut")); // 5 int[] sayilar = {10, 20, 30}; print(len(sayilar)); // 3 return 0; } ``` ### Beklenen Çıktı ``` 42 3.14 merhaba true 123 50 5.0 5 3 ``` --- ### Açık Sorular / Bağlı Fazlar - `print(true)` çıktısı `true`/`false` mi yoksa `1`/`0` mı olmalı? saQut'ta `bool` ayrı bir tip olduğu için (ADR-010, gizli int↔bool dönüşümü de yok varsayımıyla) `true`/`false` **daha tutarlı** görünüyor — ama bu kararın `print`'in builtin tablosuna (#89) not edilmesi gerekir. - `int[] sayilar = {10, 20, 30};` — array literal sözdizimi (`{...}`) şu an dilde **tanımlı mı**? Eğer değilse, bu issue aynı zamanda "array literal sözdizimi eklenmeli" şeklinde bir alt-konu açar (Faz 1/parser'a not). - `parseFloat("2.5") * 2.0` → `5.0` çıktısının `5` değil `5.0` (ondalık nokta korunarak) basılması, `print`'in `float` biçimlendirmesi için bir kural gerektirir — bu kural baştan netleşmeli (örn. her zaman en az bir ondalık basamak). *İmza/Yorum:* Bu dosya, builtin kataloğu (#89) ve minimal stdlib (#90) issue'larının "kabul testi" (acceptance test) gibi düşünülebilir.
saqut added the
test-senaryosu
label 2026-06-14 22:26:27 +03:00
Sign in to join this conversation.
No description provided.