A programming language in Turkish where grammatical case and mood are part of the type system.
Kip is an experimental language that integrates Turkish morphology into typing, exploring the overlap between linguistics and type theory.
In Kip, pure function signatures are noun phrases; effectful ones are infinitives invoked in the imperative. Every argument bears a grammatical case—nominative, accusative, dative, and so on—and case is part of the function’s type. When cases are distinct, arguments can be supplied in any order.
Kip also resolves natural-language ambiguity with type-directed disambiguation: it preserves multiple parses through parsing and lets elaboration and type checking select the intended one.
Bir öğe listesi
ya boş
ya da bir öğenin bir öğe listesine eki
olabilir.
(bu öğe listesiyle) (şu öğe listesinin) birleşimi,
bu boşsa,
şu,
ilkin devama ekiyse,
ilkin (devamla şunun birleşimine) ekidir.
(bu öğe listesinin) tersi,
bu boşsa,
boş,
ilkin devama ekiyse,
(devamın tersiyle)
(ilkin boşa ekinin) birleşimidir.
(bu tam-sayı listesini) bastırmak,
bu boşsa,
durmaktır,
ilkin devama ekiyse,
ilki yazıp,
devamı bastırmaktır.
((1'in (2'nin boşa ekine) ekinin) tersini) bastır.
Features
A small set of ideas that make Kip different.
Grammar-aware types
Grammatical case and mood are part of the type system, so argument order can vary when cases differ.
Type-directed disambiguation
Parsing preserves alternatives; type checking selects the intended meaning.
Bytecode caches
Type-checked modules are cached as .iz files to speed up repeated runs.
JavaScript codegen
Generate JS with kip --codegen js for experimenting outside the REPL.
Playground
Write custom Kip code, or pick an existing example, and run it.