[Fikir] Enum (Sabit Kümesi) Desteği #86
Labels
No Label
cli-ux
faz-plani
felsefe-gozden-gecir
ffi-builtin
fikir
gelecek-vizyon
ir-vm
kalite-mimari
moduller-import
test-senaryosu
tip-sistemi
tooling-lsp
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: saqut/saqut-compiler#86
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Giriş (Nedir, Neden Önemli?)
Şu anki dil kimliğinde
enumyok. Ama "renk", "durum", "yön" gibi sabit bir küme içinden değer alan değişkenler çok yaygındır ve bunlarıintile temsil etmek (örn.0=KIRMIZI, 1=MAVI) hem hata-eğilimli hem de okunaksızdır.Gelişme (Olası Yaklaşımlar)
enum Renk { KIRMIZI, MAVI, YESIL }— derleme zamanındaint'e eşlenen adlandırılmış sabitler. Tip denetimi (Faz 3) açısındanRenkayrı birTypeKind(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;yerineRenk x = KIRMIZI;).switch/matchile birlikte düşünülürse (dilde şu answitchyok, sadeceif) enum'un asıl gücü ortaya çıkar — bu issue, ileride birswitchtartışmasını da tetikleyebilir.SymbolKind::EnumValueeklenmesi yeterli olabilir.Açık Sorular
intmi temsil eder, yoksa ileridestringetiketli enum (örn. JSON serileştirmede yararlı) da düşünülür mü?interfacegibi 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.