トルコ語の格変化をベースとするプログラミング言語

2026/01/18 5:44

トルコ語の格変化をベースとするプログラミング言語

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

(全ての重要ポイントを組み込んだもの)


Kip – ケースベース型研究言語

Kip は、トルコ語の格変化を型システムと構文に埋め込む実験的プログラミング言語です。名詞格接尾辞と母音調和を用いて引数関係を表現し、関数引数の順序を柔軟に変更できる一方で意味は明確に保たれます。

コア機能

機能説明
引数順序格接尾辞が役割を決定します。例:
(5'le 3'ün farkını) yaz.
(3'ün 5'le farkını) yaz.
は同じ意味です。
帰納型トルコ語構文で宣言します。例:
Bir doğal-sayı ya sıfır ya da bir doğal-sayının ardılı olabilir.
多相型同様に宣言します。例:
Bir (öğe listesi) ya boş ya da bir öğenin bir öğe listesine eki olabilir.
パターンマッチング条件付き接尾辞
-sa/-se
を使用し、入れ子パターンとワイルドカード
_
をサポートします。
定数キーワード
diyelim
で宣言します。例:
sıfırın ardılına bir diyelim.
組み込み型整数 (
tam-sayı
) – 算術、比較、階乗;文字列 (
dizge
) – 長さ、連結、整数へのパース。
I/Oプリミティブ出力:
yazmak/yaz
;入力:
okumak/oku
;シーケンス接尾辞
-ip/-ıp/-up/-üp

形態論と実装

  • Kip はトルコ語の形態解析に TRmorph の有限状態変換器を利用します。曖昧な単語はすべてのパースで表現され、アポストロフィで解消できます。
  • コンパイラは Foma(パッケージマネージャ経由)と Haskell Stack を使用し、REPL (
    stack exec kip
    ) で実行するかファイルを
    --exec
    で実行します。WASM プレイグラウンドは
    playground/
    以下にあります。

プロジェクト状況

Kip は研究専用プロジェクトです。構文と挙動は進化する可能性があります。キャッシュされたバイトコードファイル (

.iz
) は、コンパイラが変更されると無効になります。


この要約はすべての主要ポイントを反映し、元のテキストに忠実でありながらメインメッセージを明確かつ簡潔に保っています。

本文

Kip(キプ)

「Kip」(トルコ語で「文法上のムード」を意味する)は、型システムにトルコ語の格変化を取り入れた実験的なプログラミング言語です。
自然言語形態素学―特にトルコ語名詞の格と母音調和―がどのようにプログラミング言語設計に組み込めるかを示しています。

これは「研究/教育プロジェクト」であり、実運用向けの言語ではありません。
トルコ語・英語両方で Kip プログラムを書き方を説明するチュートリアルがあります。
Kip は実験的なものですので、構文や挙動が時間とともに変わる可能性があります。


例プログラム

(* İlk n Fibonacci sayısını yazdırır. *)
(bu tam-sayıyı) (şu tam-sayıyı) (o tam-sayıyı) işlemek,
  (onla 0'ın eşitliği) doğruysa,
    durmaktır,
  yanlışsa,
    bunu yazıp,
    şunu (bunla şunun toplamını) (onla 1'in farkını) işlemektir.

çalıştırmak,
  "Bir sayı girin:" yazıp,
  isim olarak okuyup,
  ((ismin tam-sayı-hali)
    yokluksa,
      "Geçersiz sayı." yazmaktır,
    n'nin varlığıysa,
      0'ı 1'i n'yi işlemektir).

çalıştır.

目次

  • 言語機能
  • インストール
  • 例プログラム(全文)
  • WASM Playground
  • バイトコードキャッシュ
  • プロジェクト構成
  • テスト
  • 形態素解析
  • ライセンス

言語機能

トルコ語の格を型として利用

Kip はトルコ語名詞の格(ismin halleri)を使い、関数呼び出し時に引数の関係性を決定します。

トルコ語名接尾辞
主格 (Nominative)Yalın halnonesıfır
与格 (Accusative)-i hali-i, -ı, -u, -üsayıyı
対格 (Dative)-e hali-e, -asayıya
所在格 (Locative)-de hali-de, -da, -te, -talistede
出所格 (Ablative)-den hali-den, -dan, -ten, -tanlisteden
属格 (Genitive)Tamlayan eki-in, -ın, -un, -ünsayının
具格 (Instrumental)-le eki-le, -la, ilesayıyla
所有格(3人称)Tamlanan eki-i, -ı, -u, -ü, -si, -sıardılı

柔軟な引数順序

格が文法関係を明示的にマークするため、Kip では引数の順序を自由にできます。

(5'le 3'ün farkını) yaz.
(3'ün 5'le farkını) yaz.   -- 等価

異なる格接尾辞または型を持つ限り、Kip はどちらが何であるか判別します。

再帰的データ型

トルコ語構文で代数的データ型を定義できます。

Bir doğruluk ya doğru ya da yanlış olabilir.
Bir doğal-sayı ya sıfır ya da bir doğal-sayının ardılı olabilir.

多相型(Polymorphic Types)

汎用データ構造のために型変数がサポートされます。

Bir (öğe listesi) ya boş ya da bir öğenin bir öğe listesine eki olabilir.

パターンマッチ

条件接尾辞 -sa/-se を使ってパターンマッチします。

(bu doğruluğun) tersi,
  bu doğruysa, yanlış,
  yanlışsa, doğrudur.

Supports nested pattern matching, binders, and wildcard patterns (değilse):

(bu doğal-sayının) kopyası,
  bu sıfırsa, sıfır,
  öncülün ardılıysa, öncülün ardılıdır.

定数

diyelim を使って名前付き定数を定義します。

sıfırın ardılına bir diyelim.
birin ardılına iki diyelim.

効果と I/O

-ip/-ıp/-up/-üp 接尾辞で順序付けし、olacak で束縛します。

selamlamak,
  isim olarak okuyup,
  ("Merhaba "yla ismin birleşimini) yazmaktır.

組み込み型と演算

整数(tam-sayı)

  • 算術:
    toplamı
    ,
    farkı
    ,
    çarpımı
  • 比較:
    eşitliği
    ,
    küçüklüğü
    ,
    büyüklüğü
  • その他:
    öncülü
    ,
    sıfırlığı
    ,
    faktöriyeli

文字列(dizge)

  • 長さ:
    uzunluğu
  • 連結:
    birleşimi
  • 整数へ解析:
    tam-sayı-hali

I/O

  • 出力:
    yazmak / yaz
  • 入力:
    okumak / oku

コメント

5'i yaz.              (* Integer literal with case suffix *)
"merhaba"'yı yaz.     (* String literal with case suffix *)

インストール

前提条件

  • Foma – 有限状態形態素解析ツールキット
    • macOS:
      brew install foma
    • Debian/Ubuntu:
      apt install foma libfoma-dev
    • Fedora:
      dnf install foma foma-devel
  • Stack – Haskell ビルドツール(https://haskellstack.org

すべてをビルドせずに言語を試したい場合は、

stack exec kip
を実行してください。

ビルド

# 簡易インストール (macOS/Linux)
chmod +x install.sh
./install.sh

# あるいは手動でビルド
stack build

TRmorph の変換器は

vendor/trmorph.fst
に同梱されています。

実行

# REPL を起動
stack exec kip

# ファイルを実行
stack exec kip -- --exec path/to/file.kip

# PATH にインストール
stack install

WASM Playground

ブラウザ上で Kip を走らせるプレイグラウンドは

playground/
配下にあります。
非対話型ランナー (
kip-playground
) を
wasm32-wasi
へコンパイルし、Kip を実行する小さな HTML/JS ハーネスを同梱しています。詳細は
playground/README.md
をご覧ください。


バイトコードキャッシュ

Kip は各

.kip
ファイルの型チェック済みバージョンを兄弟ファイル
.iz
に保存します。
再度同じファイルを実行すると、ソースとその依存が変更されていなければキャッシュが再利用されます。
.iz
を削除するとパース・型チェックが強制的に再実行されます。

重要:

.iz
ファイルにはコンパイラハッシュが含まれており、コンパイラが変更された場合は自動でキャッシュが無効化されます。


プロジェクト構成

app/
└── Main.hs            - CLI エントリポイント
src/
├── Kip/
│   ├── AST.hs         - 抽象構文木
│   ├── Cache.hs       - .iz キャッシュ処理
│   ├── Eval.hs        - インタープリター
│   ├── Parser.hs      - パーサー
│   ├── Render.hs      - 美しい出力(形態素変化付き)
│   └── TypeCheck.hs   - 型チェック、格使用検証
└── Language/
    └── Foma.hs        - Haskell から Foma への FFI バインディング
lib/
├── giriş.kip          - デフォルトでロードされる Prelude モジュール
├── temel.kip           - コア型
├── temel-doğruluk.kip  - 真偽関数
├── temel-dizge.kip     - 文字列関数
├── temel-etki.kip      - I/O 原語
├── temel-liste.kip     - リスト関数
└── temel-tam-sayı.kip  - 整数関数
tests/
├── succeed/            - 成功を期待するゴールデンテスト (.kip + .out [+ .in])
└── fail/               - 失敗を期待するゴールデンテスト (.kip + .err)
vendor/
└── trmorph.fst         - TRmorph 変換器

テスト

tests/succeed/
に成功を想定したテスト、
tests/fail/
に失敗を想定したテストが配置されています。


形態素解析

Kip は TRmorph を使ってトルコ語の形態素解析を行います。
ある単語に複数のパースが存在する場合(例: takası が「taka + 所有格」または「takas + 与格」)、Kip はすべての候補を保持し、型チェック時に曖昧さを解消します。
意図的に曖昧な語を使いたい場合はアポストロフィで特定パースを強制してください:

taka'sı
vs.
takas'ı
.


ライセンス

詳細は

LICENSE
ファイルをご確認ください。

同じ日のほかのニュース

一覧に戻る →

2026/01/17 20:15

ASCII文字はピクセルではない:ASCIIレンダリングの深掘り解析

## Japanese Translation: **概要** この記事では、各文字を多次元「形状ベクトル」でモデル化することで鮮明で高コントラストのASCII画像を生成できるインタラクティブな画像→ASCIIレンダラーを紹介しています。従来の最近傍サンプリングはセルごとに1ピクセルとして扱い、ジャギーやぼやけた出力が生じます。スーパーサンプリングはジャギーを減らしますが、単一の輝度値へ平均化するためエッジがまだぼやけてしまいます。 新しい手法では、セルの上/下と左/右の半分を小さな円でサンプリングし、各グリフがどのように空間を占有しているかを捉えます。これにより6次元(方向性コントラスト用の外部サンプリングをオプションで追加)形状ベクトルが生成されます。このベクトル空間で最近傍検索を行い、グリッドセルごとに最適な文字を選択します。ベクトル要素を指数関数的に上げることでコントラストを増幅し(全体の対比を高めつつ均一な勾配を保持)、さらに隣接セルをサンプリングする方向性コントラストでシャープ化します。 フレームごとのユークリッド距離計算とサンプリング収集によるパフォーマンスボトルネックは、**k‑d木インデックス**、**量子化キーを用いたキャッシュ**、およびサンプリングとコントラスト段階の **GPUアクセラレーション** を組み合わせて解消し、モバイルデバイスでもスムーズなFPSを実現しています。著者はさらに、各文字に異なる色/明度を割り当てる方法や高次元サンプリングベクトルの探索などの拡張可能性についても概説しています。 最後に、読者は将来の投稿でこれらの開発内容を取り上げる予定のメールリストへの登録を勧められています。

2026/01/18 7:19

ライトモード・インフレーション (Note: “ライトモード”は「軽い(低エネルギー)モード」を指し、物理学や宇宙論の文脈で使われることが多いです。)

## Japanese Translation: **改善された概要** この記事は、macOS のライトモードウィンドウが過去 16 年で徐々に明るくなってきたことを示しており、Snow Leopard(2012)では平均明度が約 71 %だったのが、Mac OS Tahoe ではほぼ 100 %に上昇しています。著者はスクリーンショットをクロップし、Pillow を使ってグレースケールへ変換した後、ピクセル平均強度を算出することで測定しました。この分析は画面全体やアプリケーションの明るさではなく、**ウィンドウクロム**に特化しています。2020 年末に M1 MacBook Air にアップグレード(Big Sur でウィンドウ明度が 85 %から 97 %に増加)した後、著者はダークモードへ切り替えました。ダークモードは Mojave(2018)で導入されました。本研究では、典型的なライトモードウィンドウの最も暗い色が Tahoe では 97 %明度に達する一方、Snow Leopard では 90 %であることを指摘しています。また、iOS 26 の HDR 実装は一部要素を 100 %以上の白に押し上げる可能性があり、知覚される明るさを過大評価する恐れがあると述べています。 著者は、このより明るい UI デザインへの移行がコントラストバイアスによってダーク背景をより魅力的にしていると主張し、ユーザーの目の疲労を軽減しつつアプリ間の視覚的区別を保つために中程度のグレー(約 50 %)インターフェースを推奨しています。将来のデザインへのインスピレーションとして、著者はより高い明るさレベルにもかかわらず、Yosemite などの古い macOS スタイルを好んでいます。 このバージョンは主要なポイントすべてを保持し、ダークモード導入に関する余計な因果推論を削除し、ウィンドウクロムへの焦点を明確にしています。

2026/01/18 6:03

**Show HN: ChunkHound、ローカル優先型ツールで大規模コードベースを理解する**

## Japanese Translation: ChunkHoundはローカルファーストのAIアシスタントで、コードベース全体をインデックス化し、開発者が意味的に検索できるようにします。正規表現サポート付きで複数言語間でも検索可能であり、外部APIは必要ありません。cASTアルゴリズムを使用してファイルを意味のあるチャンクに分割し、マルチホップセマンティックサーチを適用することでコード間の関係性を発見します。Tree-sitterパーサーが30種類のプログラミング言語(Python, JavaScript/TypeScript/JSX/TSX, Java, Kotlin, Groovy, C/C++/C#, Go, Rust, Haskell, Swift, Bash, MATLAB, Makefile, Objective‑C, PHP, Vue, Svelte, Zig)と構成フォーマット(JSON, YAML, TOML, HCL, Markdown)のネイティブサポートを提供し、テキストファイルやPDF用のカスタムパーサーも備えています。 ChunkHoundはMCPフレームワークに統合されており、リアルタイムインクリメンタルインデックス化、スマートディフ、およびシームレスなブランチ切替を実現します。VS Code, Cursor, Windsurf, Zedなどの人気エディタと連携でき、Claude Code CLIやその他LLMバックエンド(Claude, Codex, Anthropic, OpenAI)経由で動作させることも可能です。埋め込みはVoyageAI(推奨)、OpenAI、またはローカルOllamaから取得できます;正規表現検索はオプションのAPIキーを使用して有効にすることができます。 インストールにはPython 3.10+とuvパッケージマネージャーが必要です。クイックスタート設定ファイル(.chunkhound.json)で埋め込みプロバイダーとLLMプロバイダーを指定します。完全なドキュメント、チュートリアル、およびアーキテクチャの詳細はchunkhound.github.ioにて入手できます。 ChunkHoundの価値提案は、意味的検索・正規表現検索・コードリサーチ機能を自動インクリメンタルリアルタイムインデックス化と組み合わせる点にあります。従来のキーワードツールでは欠けている機能であり、RAGソリューションが再インデックスオーバーヘッドのために持たない機能、知識グラフが継続的な同期コストを伴う点とも対照的です。大規模なモノレポでクロスチーム依存関係がある場合や、セキュリティ重視・空気隔離されたローカルプロジェクト、多言語コードベースで一貫したオフライン検索を必要とするケースに特に適しています。 本プロジェクトはMITライセンスの下で公開されています。

トルコ語の格変化をベースとするプログラミング言語 | そっか~ニュース