本文へ ホーム › 記事 なぜジャネットなのか? (2023) 概要
Janetはシンプルで強力なLisp系プログラミング言語
ネイティブバイナリへの配布や埋め込みが容易
テキストパースやサブプロセスDSLが優秀
ミュータブル・イミュータブルコレクションやマクロも充実
独自の快適な文法と思想
Janetを使うべき理由
Janet は、現代的で親しみやすい Lisp方言 のプログラミング言語
私はJanetに魅了され、本まで執筆し無料公開
Janetの魅力を知ってほしいと考え、ここでその理由を紹介
Janetのシンプルさ
命令数 はわずか8つ(do, def, var, set, if, while, break, fn)
JavaScriptに似た ランタイムセマンティクス で直感的
標準ライブラリも 1ページに収まる ほどコンパクト
学習コスト が非常に低く、午後だけで習得可能
Janetの配布・実行形式
Janetプログラムは ネイティブバイナリ に簡単に変換可能
Janetランタイムごと 静的リンク され、配布先に依存不要
Cコンパイラ でビルドする仕組みにより、自己埋め込み型バイナリ生成
1MB未満の 軽量バイナリ (例: 784K on aarch64 macOS)
Janetランタイム・GC・バイトコードコンパイラすべて内包
Janetのテキストパース能力
正規表現ではなく Parsing Expression Grammar (PEG) ベース
マルチラインやHTML/JSON/バイナリフォーマットも 柔軟に解析
構造的かつ合成可能なパーサ が標準で利用可能
学習も 簡単
JanetのサブプロセスDSL
サードパーティライブラリ sh による強力なシェルスクリプトDSL
例: ($ find . -name *.janet | say)
パイプやリダイレクト を直感的に記述可能
PerlやBashの代替としても 優秀
Janetの埋め込み性
Janetランタイムは 小さなCライブラリ
Cから簡単に 関数呼び出し・値操作 が可能
ウェブサイトへの埋め込みや カスタムDSL 構築にも最適
Janetのコレクション型
ミュータブル ・ イミュータブル 両方のコレクションを標準搭載
イミュータブルコレクションは 値セマンティクス
ミュータブルコレクションは 参照セマンティクス
標準ライブラリに イミュータブル複合値 があるのは珍しい特徴
Janetのマクロ
マクロを学ばずとも 通常利用可能
コード生成 の楽しさと強力さ
Janetのマクロは 衛生的ではない が、 リテラル関数のアンコート で透明性確保
抽象構文木操作 がシンプルかつエレガント
Janetのコンパイル時・実行時の値受け渡し
値のシリアライズ と スナップショット実行 が可能
コンパイル時にトップレベルのコードを 実行し状態を保存
共有参照やジェネレータの状態も保持
マクロ無しでもこの仕組みを活用可能
例: ゲームのスプライン事前計算やアセット埋め込み
Janetの文法と書き心地
シンプル・統一感・多様性の 絶妙なバランス
括弧を多用しつつ、[]や{}で 構造を明確化
ミュータブルリテラルは @記法
無名関数や 関数リフティングの簡潔記法
バッククォートで エスケープ不要な文字列リテラル
可変長引数 は&記法
リーダーマクロ非対応 で文法の一貫性維持
Janetの思想と伝統との違い
CAR→first, PROGN→do, LAMBDA→fn, SETQ→def
nilは独自型で 空リストではない
真偽値はファーストクラス
EQ, EQL, EQUAL, EQUALPなどの 伝統的関数は非搭載
連結リスト不在 で現代的な設計
伝統的Lispのイメージに囚われず、 新しい快適さ を追求
提供: ハクソク · 要約更新: 2026年6月2日
AIによる日本語要約です。内容は原文とあわせてご確認ください。
Hacker Newsの議論を読む ハクソクについて 記事アーカイブ RSS AIによる日本語要約・翻訳を含みます。内容は原文とあわせてご確認ください。
この投稿は新鮮だね。まるでAIが登場する前のネットの議論を思い出すよ。新しい言語、新しい構文、何年もコードを書いてきた人たちとの激しい議論。AIを禁止したオンラインコミュニティを誰か作るべきだと思う。