[Fikir] Enum (Sabit Kümesi) Desteği #86

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

Giriş (Nedir, Neden Önemli?)

Şu anki dil kimliğinde enum yok. Ama "renk", "durum", "yön" gibi sabit bir küme içinden değer alan değişkenler çok yaygındır ve bunları int ile temsil etmek (örn. 0=KIRMIZI, 1=MAVI) hem hata-eğilimli hem de okunaksızdır.


Gelişme (Olası Yaklaşımlar)

  • En basit model: enum Renk { KIRMIZI, MAVI, YESIL } — derleme zamanında int'e eşlenen adlandırılmış sabitler. Tip denetimi (Faz 3) açısından Renk ayrı bir TypeKind (ya da struct'a benzer adlandırılmış-tip) olarak ele alınabilir; int'le gizli dönüşüm yasak (ADR-010 ile tutarlı — Renk x = 0; yerine Renk x = KIRMIZI;).
  • switch/match ile birlikte düşünülürse (dilde şu an switch yok, sadece if) enum'un asıl gücü ortaya çıkar — bu issue, ileride bir switch tartışmasını da tetikleyebilir.
  • Struct'lara ek yük getirmez, sembol tablosuna (Faz 2) yeni bir SymbolKind::EnumValue eklenmesi yeterli olabilir.

Açık Sorular

  • Enum değerleri sadece int mi temsil eder, yoksa ileride string etiketli enum (örn. JSON serileştirmede yararlı) da düşünülür mü?
  • interface gibi enum da "ertelendi" listesine mi girer, yoksa v0.1'e (fibonacci sonrası ilk gerçek dil-genişletmesi) yakın bir öncelik mi?

İmza/Yorum: Düşük karmaşıklıkta, yüksek günlük-kullanım faydası olan bir özellik — "fibonacci sonrası ilk küçük kazanımlar" listesine iyi bir aday.

### Giriş (Nedir, Neden Önemli?) Şu anki dil kimliğinde `enum` yok. Ama "renk", "durum", "yön" gibi sabit bir küme içinden değer alan değişkenler çok yaygındır ve bunları `int` ile temsil etmek (örn. `0=KIRMIZI, 1=MAVI`) hem hata-eğilimli hem de okunaksızdır. --- ### Gelişme (Olası Yaklaşımlar) - En basit model: `enum Renk { KIRMIZI, MAVI, YESIL }` — derleme zamanında `int`'e eşlenen adlandırılmış sabitler. Tip denetimi (Faz 3) açısından `Renk` ayrı bir `TypeKind` (ya da struct'a benzer adlandırılmış-tip) olarak ele alınabilir; `int`'le gizli dönüşüm yasak (ADR-010 ile tutarlı — `Renk x = 0;` yerine `Renk x = KIRMIZI;`). - `switch`/`match` ile birlikte düşünülürse (dilde şu an `switch` yok, sadece `if`) enum'un asıl gücü ortaya çıkar — bu issue, ileride bir `switch` tartışmasını da tetikleyebilir. - Struct'lara ek yük getirmez, sembol tablosuna (Faz 2) yeni bir `SymbolKind::EnumValue` eklenmesi yeterli olabilir. --- ### Açık Sorular - Enum değerleri sadece `int` mi temsil eder, yoksa ileride `string` etiketli enum (örn. JSON serileştirmede yararlı) da düşünülür mü? - `interface` gibi enum da "ertelendi" listesine mi girer, yoksa v0.1'e (fibonacci sonrası ilk gerçek dil-genişletmesi) yakın bir öncelik mi? *İmza/Yorum:* Düşük karmaşıklıkta, yüksek günlük-kullanım faydası olan bir özellik — "fibonacci sonrası ilk küçük kazanımlar" listesine iyi bir aday.
saqut added the
fikir
tip-sistemi
labels 2026-06-14 22:14:02 +03:00
Sign in to join this conversation.
No description provided.