- CIEL 100% Common Lisp आधारित एक विस्तारित Lisp है, जो बुनियादी टूल्स के साथ “batteries included” कॉन्फ़िगरेशन प्रदान करता है
- स्क्रिप्ट
#!/usr/bin/env ciel shebang के साथ चलती है, और Lisp कोड में सीधे JSON पढ़ना तथा HTTP GET इस्तेमाल किया जा सकता है
- उदाहरण
http:get से https://fakestoreapi.com/products?limit=5 को कॉल करता है, json:read-json से response पढ़ता है, और print से आउटपुट देता है
./myscript.lisp चलाने का उदाहरण दिखाता है कि CIEL स्क्रिप्ट को सामान्य executable फ़ाइल की तरह कैसे इस्तेमाल किया जा सकता है
- वेब दस्तावेज़ का बाकी हिस्सा देखने के लिए JavaScript आवश्यक है, और JavaScript के बिना देखने के लिए GitHub repository देखनी होगी
CIEL की बुनियादी प्रकृति
- CIEL को “विस्तारित Lisp” के रूप में पेश किया गया है
-
Common Lisp आधारित
- यह 100% Common Lisp आधारित है
- इसकी खासियत बुनियादी टूल्स सहित batteries included कॉन्फ़िगरेशन है
स्क्रिप्ट चलाने का उदाहरण
- उदाहरण कोड में shebang के रूप में
ciel executable निर्दिष्ट है
#!/usr/bin/env ciel
(print
(json:read-json
(http:get "https://fakestoreapi.com/products?limit=5")))
http:get से HTTP request भेजी जाती है, json:read-json से response JSON पढ़ा जाता है, और फिर print से आउटपुट किया जाता है
- चलाने का कमांड इस प्रकार है
$ ./myscript.lisp
दस्तावेज़ और repository तक पहुँच
- प्रोजेक्ट लिंक GitHub पर उपलब्ध है
- वेब दस्तावेज़ का बाकी हिस्सा देखने के लिए JavaScript चाहिए, और यदि JavaScript उपलब्ध न हो तो GitHub repository देखने का निर्देश दिया गया है
1 टिप्पणियां
Hacker News की राय
standard के तौर पर अच्छी तरह documented components का इस तरह bundled होना कि वे core language का हिस्सा जैसे तुरंत इस्तेमाल किए जा सकें, और ऊपर से एक बढ़िया नाम मिलना, सच में बहुत अहम है
मुझे पसंद आया, और यह नया standard target भी बन सकता है। अब बस एक अच्छा mascot या logo चाहिए
approach पसंद आया। मैंने “एक और Lisp” की उम्मीद की थी, जो cool तो होता लेकिन शायद तुरंत इस्तेमाल करने का मन नहीं करता
जो पहले से है उसे expand और improve करना, नए सिरे से शुरू करने से ज्यादा मुश्किल और कम मज़ेदार हो सकता है, लेकिन उसकी value कहीं ज्यादा है। मैं पहले से Common Lisp इस्तेमाल करता हूँ, और यह खासकर beginners या छोटे projects में उसकी अजीबोगरीब बातों को थोड़ा कम करता लगता है
जब भी तेज़ और सुविधाजनक Lisp की बात आती है, मैं Joker(https://github.com/candid82/joker) का ज़िक्र करना चाहता हूँ
यह Go में implement किया गया Clojure syntax है, और मैं इससे जुड़ा नहीं हूँ, लेकिन मुझे यह वाकई शानदार लगता है। CIEL example को Joker में लिखें तो
(prn {:a 1 :b 2 :c 3})होगा, और download·install·run के लिए Gist है https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...पूरा script चलने में 2.1 सेकंड लगे, और example execution में खुद 0.007 सेकंड लगे
Babashka(https://babashka.org/) ने जो approach चुना था, वैसा अब Common Lisp world में भी दिख रहा है, यह देखकर अच्छा लगा
Safari में देखने पर भी वही Javascript warning आती है। कोई extension चालू नहीं था
Chrome में चेक किया, तो बाकी सब कुछ ठीक वैसा दिखता है जैसा मैं इस्तेमाल करना चाहूँगा। CL standard library पहले से थोड़ी overloaded लगती है, लेकिन “batteries included” की तरफ जाना है तो Alexandria, Bordeaux जैसी चीज़ें गायब थीं, इसलिए यह choice मुझे पसंद है। थोड़ा fragmented CL ecosystem में “best practices” या standardization जैसा एहसास देती है
शानदार। निजी तौर पर मैं Alexandria, Serapeum, Dexador, Bordeaux Threads और JSON-related tools वाली image इस्तेमाल करता हूँ, लेकिन अगर दूसरों के लिए भी similar target वाली कोई चीज़ हो तो सुविधाजनक हो सकता है
बहुत ज़्यादा चर्चा में उलझे रहे CDR proposals या उससे पहले के CL21 की तुलना में इसकी success की संभावना ज्यादा लगती है। यह भी जानना चाहूँगा कि क्या default में बहुत सारे reader macros set हैं
क्योंकि default में readtable को छूना नहीं चाहते। editor REPL में shell passthrough enable करने का तरीका नीचे देखें
1: https://github.com/Neronus/Clesh
अगर ncurses और SDL cores build करने वाला wrapper आ जाए, तो शायद किसी दिन lem सीधे CIEL पर चल सके और असली Lisp environment निकल आए
https://news.ycombinator.com/item?id=41357409
Ron Garret ने 2010 में जो एक और Lisp Ciel(https://pldb.io/concepts/ciel.html) बनाया था, यह उससे अलग लगता है। वे rocket scientist भी हैं(https://flownet.com/ron/)
क्या इसे binary में आसानी से compile किया जा सकता है? लगता तो है कि standard CL तरीका इस्तेमाल किया जा सकता है
CIEL custom REPLमें!lsजैसा shell passthrough होना एक cool feature हैauthor अभी इसे “ready” या “good enough” नहीं मानते, लेकिन यह काफी आगे बढ़ चुका है। POSIX shell https://github.com/bradleyjensen/shcl भी है। हमेशा की तरह और लंबी list https://github.com/CodyReichert/awesome-cl#shells-shells-int... पर मिल सकती है
ciel buildcommand जोड़ना चाहता हूँसोच रहा हूँ कि क्या Python REPL implementation के मामले में unusual है। REPL में मुझे सिर्फ Python और e-lisp की आदत है
Ctrl+Zमें क्या कमी है?यह SBCL में libraries जोड़ने जैसा दिखता है। author vindarel HN पर हैं
नया project शुरू करते समय, बाहरी दुनिया से interact करना हो, या Python की complexity के बिना कोई छोटी चीज़ लिखकर server पर डालनी हो, तो यह काफी समय बचाता है। Django को replace करना ज़ाहिर है मुश्किल है, लेकिन CRUD कामों के लिए automatic DB dashboard भी शुरू किया है और अभी public नहीं है, पर काम चल रहा है
client work में मैंने CL को धीरे-धीरे integrate किया है, और CIEL उस उद्देश्य के लिए एक और tool है। CL को सचमुच इस्तेमाल करने के लिए। मेरे projects को CL की superpowers की ज़रूरत अनिवार्य रूप से नहीं है, लेकिन development·deployment·monitoring के लिए मैं उसकी ताकत चाहता हूँ
आज कुछ issues ठीक किए और v0.2 release किया: https://github.com/ciel-lang/CIEL/releases/tag/v02 मुख्य बात यह है कि CIEL install करना, खासकर Mac पर, अब काफी आसान होना चाहिए। अब system dependencies बहुत कम हो गई हैं
अगर अभी भी किसी खास platform पर install करना मुश्किल हो, तो issue में details भेजें। संक्षेप में, उम्मीद है कि CIEL आपकी CL journey को आसान और smooth बनाएगा। आप अंदाज़ा भी नहीं लगा सकते कि कुछ चीज़ें पता लगाने में कितना समय लगा। अब ये यहाँ ready और packaged हैं :-]