[go: up one dir, main page]

Kip

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.

Example
defining and using a linked list type
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.