
2026/01/03 4:39
ジャンクな言語がアルファへヒットする。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Jank はLLVMにコンパイルされるClojure方言で、開発者にはC++との相互運用性を提供しつつ、コアのClojureセマンティクスは維持します。組み込みデータ構造はデフォルトで永続的かつ不変であり、副作用は随時処理されます;例えば
関数は挨拶を出力し、更新されたマップを返します。say-hiのようなコア関数はClojureと同じように動作します。また、この言語はシームレスなC++統合も示しており、例えばapply + (distinct [...])関数はsleepを呼び出します。cpp/std.chrono.millisecondsJank は現在アルファ版であり、その「jank book」とサンプルコードスニペットが構文と相互運用例を提供しています。プロジェクトが成熟するにつれて、より詳細なガイドが期待されています。Clojure風のプログラミングが必要だがLLVM性能やネイティブライブラリへのアクセスも求めるユーザーにとって魅力的でしょう。開発を支援し方向性に影響を与えたい企業向けには、月額25ドル($25 / month)のシンプルなスポンサーシップモデルが利用可能です。
本文
Jankとは何か?
最も簡単に言えば、jank は C++ との相互運用を備えた LLVM 上で動作する Clojure 方言です。
もう少し具体的には、Clojure の対話型・関数型・値指向の特性を取り入れつつ、ネイティブランタイムとパフォーマンスを重視した汎用プログラミング言語です。Jank は Clojure との強い互換性を目指しています:Clojure のデフォルトホストは JVM と Java 相互運用ですが、jank のホストは LLVM と C++ 相互運用です。
Jank は現在アルファ版です! 詳細はこちらをご覧ください。
ドキュメント
- 「jank 本」を読む
- サンプルコード
; コメントは ; で始まります。 (println "meow") ; => nil ; すべての組み込みデータ構造は永続的かつ不変です。 (def george {:name "George Clooney"}) ; => #'user/george ; デフォルトではデータは不変ですが、副作用は必要に応じて行えます。 (defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true)) ; george は変更されません。 (say-hi george) ; => {:name "George Clooney", :greeted? true} ; 不変データを扱うための多くのコア関数があります。 (apply + (distinct [12 8 12 16 8 6])) ; => 42 ; C++ との相互運用は *シームレス* に行えます。 (defn sleep [ms] (let [duration (cpp/std.chrono.milliseconds ms)] (cpp/std.this_thread.sleep_for duration)))
スポンサー
プロジェクトに名前・会社名・ロゴを掲載したい場合は、最低 $25/月 でスポンサーになることができます。
- Misha Karpenko
- Bert Muthalaly
- modulr-software
- multiply.co
- keychera
ニュース