- CIEL là một Lisp mở rộng dựa 100% trên Common Lisp, theo đuổi cấu hình “batteries included” với các công cụ cơ bản được cung cấp sẵn
- Script có thể chạy bằng shebang
#!/usr/bin/env ciel, và có thể dùng trực tiếp đọc JSON cùng HTTP GET trong mã Lisp
- Ví dụ sử dụng
http:get để gọi https://fakestoreapi.com/products?limit=5, rồi dùng json:read-json để đọc phản hồi và in ra bằng print
- Ví dụ chạy
./myscript.lisp cho thấy luồng làm việc xử lý script CIEL như một tệp thực thi thông thường
- Phần còn lại của tài liệu web cần JavaScript, và nếu muốn xem không cần JavaScript thì phải vào kho GitHub
Đặc tính cơ bản của CIEL
- CIEL được giới thiệu là một “Lisp mở rộng”
-
Dựa trên Common Lisp
- Dựa 100% trên Common Lisp
- Nổi bật với cấu hình batteries included có sẵn các công cụ cơ bản
Ví dụ chạy script
- Mã ví dụ chỉ định trình thực thi
ciel làm shebang
#!/usr/bin/env ciel
(print
(json:read-json
(http:get "https://fakestoreapi.com/products?limit=5")))
http:get gửi yêu cầu HTTP, json:read-json đọc JSON phản hồi, sau đó print in kết quả ra
- Lệnh thực thi như sau
$ ./myscript.lisp
Truy cập tài liệu và kho mã
- Liên kết dự án được cung cấp tại GitHub
- Phần còn lại của tài liệu web cần JavaScript, và nếu không thể dùng JavaScript thì có hướng dẫn xem kho GitHub
1 bình luận
Ý kiến trên Hacker News
Việc các thành phần được chuẩn hóa và ghi tài liệu đầy đủ được đóng gói để có thể dùng ngay như một phần của ngôn ngữ lõi, lại còn có một cái tên hay, là cực kỳ quan trọng
Tôi thích điều này, và có vẻ nó có thể trở thành một mục tiêu chuẩn mới. Giờ chỉ cần một linh vật hoặc logo đẹp nữa là đủ
Tôi thích cách tiếp cận này. Tôi đã nghĩ sẽ là “một Lisp khác”, cái đó tuy hay nhưng chắc tôi sẽ không muốn dùng ngay
Mở rộng và cải thiện thứ đã có có thể khó hơn và kém vui hơn so với bắt đầu lại từ đầu, nhưng có giá trị hơn nhiều. Tôi vốn đã dùng Common Lisp, và thứ này dường như giúp giảm bớt phần nào những điểm kỳ quặc đặc trưng của nó, nhất là với người mới bắt đầu hoặc các dự án nhỏ
Mỗi khi nói đến một Lisp nhanh và tiện, tôi lại muốn nhắc đến Joker(https://github.com/candid82/joker)
Nó là cú pháp Clojure được triển khai bằng Go; tôi không liên quan gì, nhưng thật sự nghĩ nó rất tuyệt. Nếu viết ví dụ CIEL bằng Joker thì là
(prn {:a 1 :b 2 :c 3}), còn Gist để tải xuống, cài đặt và chạy là https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...Chạy toàn bộ script mất 2,1 giây, còn bản thân ví dụ mất 0,007 giây
Thật vui khi thấy cách tiếp cận mà Babashka(https://babashka.org/) chọn giờ cũng xuất hiện trong thế giới Common Lisp
Xem trên Safari cũng hiện cùng cảnh báo Javascript. Tôi không bật tiện ích mở rộng nào
Kiểm tra bằng Chrome thì ngoài chuyện đó ra, nó trông đúng là kiểu tôi muốn dùng. Thư viện chuẩn CL vốn đã có cảm giác hơi quá tải, nhưng nếu muốn theo hướng “kèm sẵn pin”, thì trước đây còn thiếu những thứ như Alexandria, Bordeaux, nên tôi thích lựa chọn này. Nó đem lại cảm giác “thực hành tốt nhất” hoặc chuẩn hóa cho hệ sinh thái CL hơi phân mảnh
Tuyệt vời. Cá nhân tôi đang dùng một image có Alexandria, Serapeum, Dexador, Bordeaux Threads và các công cụ liên quan đến JSON, nên nếu có một thứ mà người khác cũng dùng làm mục tiêu tương tự thì sẽ tiện
Nó có vẻ có khả năng thành công cao hơn các đề xuất CDR vốn bị bàn luận quá nhiều, hay CL21 trước đó. Tôi cũng tò mò liệu có nhiều reader macro được bật mặc định không
Vì không muốn đụng đến readtable theo mặc định. Cách bật shell passthrough trong REPL của editor thì xem bên dưới
1: https://github.com/Neronus/Clesh
Nếu có wrapper để build lõi ncurses và SDL, biết đâu một ngày nào đó lem có thể chạy trực tiếp trên CIEL và một môi trường Lisp thật sự sẽ xuất hiện
https://news.ycombinator.com/item?id=41357409
Có vẻ khác với Ciel(https://pldb.io/concepts/ciel.html), một Lisp khác do Ron Garret tạo năm 2010. Ông ấy cũng là nhà khoa học tên lửa(https://flownet.com/ron/)
Có thể biên dịch thành binary dễ dàng không? Có vẻ chỉ cần dùng cách chuẩn của CL
Việc
CIEL custom REPLcó shell passthrough như!lslà một tính năng hayTác giả vẫn chưa xem nó là “sẵn sàng” hay “đủ tốt”, nhưng đã tiến triển khá xa. Cũng có một shell POSIX là https://github.com/bradleyjensen/shcl. Như thường lệ, danh sách đầy đủ hơn có ở https://github.com/CodyReichert/awesome-cl#shells-shells-int...
Tôi muốn thêm lệnh
ciel buildTôi tò mò liệu Python có phải là trường hợp khác thường trong cách triển khai REPL không. Tôi chỉ quen REPL của Python và e-lisp
Ctrl+Zthì thiếu gì?Trông giống như SBCL cộng thêm các thư viện. Tác giả vindarel có mặt trên HN
Khi bắt đầu dự án mới, khi cần tương tác với thế giới bên ngoài, hoặc khi muốn viết một thứ nhỏ rồi đưa lên server mà không phải chịu độ phức tạp của Python, nó tiết kiệm rất nhiều thời gian. Tất nhiên khó thay thế Django, nhưng tôi cũng đã bắt đầu làm một dashboard DB tự động cho các tác vụ CRUD; chưa công khai nhưng đang tiến triển
Tôi đã từng bước tích hợp CL vào công việc cho khách hàng, và CIEL là thêm một công cụ cho mục đích đó. Đó là để dùng CL trong thực tế. Các dự án của tôi không nhất thiết cần siêu năng lực của CL, nhưng tôi muốn sức mạnh đó trong phát triển, triển khai và giám sát
Hôm nay tôi đã sửa vài vấn đề và phát hành v0.2: https://github.com/ciel-lang/CIEL/releases/tag/v02 Điểm chính là việc cài đặt CIEL, đặc biệt trên Mac, sẽ dễ hơn nhiều. Giờ các phụ thuộc hệ thống đã ít hơn hẳn
Nếu vẫn khó cài đặt trên một nền tảng cụ thể nào đó, mong bạn gửi chi tiết trong issue. Tóm lại, tôi hy vọng CIEL sẽ giúp hành trình CL của các bạn dễ dàng và mượt mà hơn. Bạn sẽ không tưởng tượng được tôi đã mất bao lâu để tìm ra một số thứ đâu. Giờ mọi thứ đã được chuẩn bị và đóng gói ở đây :-]