- CIELは100% Common Lispベースの拡張Lispで、基本ツールを同梱する「batteries included」構成を掲げている
- スクリプトは
#!/usr/bin/env ciel のshebangで実行され、Lispコード内でJSONの読み込みとHTTP GETをそのまま利用できる
- 例では
http:get で呼び出し、json:read-json でレスポンスを読み取り、print で出力する
./myscript.lisp の実行例は、CIELスクリプトを通常の実行ファイルのように扱う流れを示している
- Webドキュメントの残りの部分にはJavaScriptが必要で、JavaScriptなしで閲覧するにはGitHubリポジトリを確認する必要がある
CIELの基本的な性格
- CIELは「拡張されたLisp」として紹介されている言語
-
Common Lispベース
- 100% Common Lispベース
- 基本ツールを含む batteries included 構成を特徴として掲げている
スクリプト実行例
- サンプルコードでは、
ciel 実行環境をshebangで指定している
#!/usr/bin/env ciel
(print
(json:read-json
(http:get "https://fakestoreapi.com/products?limit=5")))
http:get でHTTPリクエストを送り、json:read-json でレスポンスJSONを読み取ったあと、print で出力する
- 実行コマンドは次のとおり
$ ./myscript.lisp
ドキュメントとリポジトリへのアクセス
- プロジェクトのリンクは GitHub で提供されている
- Webドキュメントの残りの部分にはJavaScriptが必要で、JavaScriptを利用できない場合はGitHubリポジトリを見るよう案内されている
1件のコメント
Hacker Newsのコメント
標準としてよく文書化された構成要素が、まるでコア言語の一部のようにすぐ使える形でまとめられ、しかも気の利いた名前まで付いているのは本当に重要
気に入ったし、新しい標準ターゲットになる可能性もありそう。あとは良いマスコットかロゴがあれば十分
このアプローチは気に入った。「また別の Lisp」かと思っていたが、それはそれで格好よくても、すぐ使いたいとは思わなかったはず
既にあるものを拡張して改善するのは、新しく始めるより難しくて面白みに欠けるかもしれないが、はるかに価値が高い。すでに Common Lisp を使っているし、これは特に入門者や小さなプロジェクトで、あの独特の奇妙さを少し減らしてくれそう
高速で手軽な Lisp の話になるたびに Joker(https://github.com/candid82/joker)を持ち出したくなる
Go で実装された Clojure 構文で、関係者ではないが本当に素晴らしいと思う。CIEL の例を Joker で書くなら
(prn {:a 1 :b 2 :c 3})で、ダウンロード・インストール・実行用の Gist は https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...スクリプト全体の実行は 2.1 秒、例の実行自体は 0.007 秒だった
Babashka(https://babashka.org/)が取ったアプローチが、今や Common Lisp の世界にも現れたのはうれしい
Safari で見ても同じ Javascript 警告が出る。拡張は何も有効にしていない
Chrome で確認すると、それ以外はまさに使いたい形に見える。CL 標準ライブラリはすでに少し過積載気味に感じるが、「バッテリー同梱」に進むなら Alexandria や Bordeaux のようなものが欠けていたので、この選択は気に入った。やや断片化した CL エコシステムに「ベストプラクティス」や標準化の感覚を与えている
素晴らしい。個人的には Alexandria, Serapeum, Dexador, Bordeaux Threads と JSON 関連ツールを入れたイメージを使っているが、他の人たちも似たターゲットとして使える何かがあると便利かもしれない
議論ばかりが過剰だった CDR 提案や、それ以前の CL21 より成功の可能性が高そうに見える。デフォルトで設定されている reader macro が多いのかも気になる
デフォルトで readtable をいじりたくないから。エディタ REPL でシェルパススルーを有効にする方法は下を見ればよい
1: https://github.com/Neronus/Clesh
ncurses と SDL コアをビルドするラッパーができれば、いつか lem が CIEL の上でそのまま動き、本当の Lisp 環境ができるのではないかと思う
https://news.ycombinator.com/item?id=41357409
Ron Garret が 2010 年に作った別の Lisp、Ciel(https://pldb.io/concepts/ciel.html)とは違うようだ。彼はロケット科学者でもある(https://flownet.com/ron/)
バイナリに簡単にコンパイルできるのだろうか? 標準的な CL のやり方を使えばよさそうではある
CIEL custom REPLに!lsのような シェルパススルーがあるのは気の利いた機能作者はまだ「準備完了」や「十分に良い」とは見ていないが、かなり進んでいる。POSIX シェルの https://github.com/bradleyjensen/shcl もある。いつものように、さらに多くの一覧は https://github.com/CodyReichert/awesome-cl#shells-shells-int... で見られる
ciel buildコマンドを追加したいPython が REPL 実装では変わり種なのか気になる。REPL は Python と e-lisp しか慣れていない
Ctrl+Zでは何が足りないのか?SBCL にライブラリを追加したもののように見える。作者の vindarel は HN にいる
新しいプロジェクトを始めるとき、外の世界とやり取りしなければならないとき、Python の複雑さなしに小さなものを書いてサーバーに載せたいときに、多くの時間を節約してくれる。もちろん Django の代替は難しいが、CRUD 作業向けの自動 DB ダッシュボードも始めていて、まだ未公開だが進行中
クライアント業務に CL を段階的に統合してきたし、CIEL はそのためのもう 1 つの手段だ。CL を実際に使うために。私のプロジェクトに CL の超能力が絶対必要というわけではないが、開発・デプロイ・監視にはその力が欲しい
今日いくつかの問題を修正して v0.2 をリリースした: https://github.com/ciel-lang/CIEL/releases/tag/v02 要点は、CIEL のインストールが特に Mac でもっと簡単であるべきということ。今ではシステム依存関係がかなり減った
それでも特定のプラットフォームでインストールが難しいなら、issue に詳細を送ってもらえると助かる。要するに、CIEL が皆さんの CL の旅をもっと簡単で滑らかなものにしてくれることを願っている。いろいろなことを突き止めるのにどれだけ時間がかかったか、想像もつかないはず。今はそれがここに用意され、パッケージ化されている :-]