- CIEL é uma Lisp estendida baseada 100% em Common Lisp, com uma proposta de “batteries included” que já fornece as ferramentas básicas
- Scripts podem ser executados com o shebang
#!/usr/bin/env ciel, e o código Lisp usa leitura de JSON e HTTP GET diretamente
- O exemplo faz uma chamada com
http:get, lê a resposta com json:read-json e imprime o resultado com print
- O exemplo de execução com
./myscript.lisp mostra um fluxo em que scripts CIEL são tratados como executáveis comuns
- O restante da documentação web exige JavaScript e, sem JavaScript, é preciso consultar o repositório no GitHub
Natureza básica do CIEL
- CIEL é apresentado como uma “Lisp estendida”
-
Baseado em Common Lisp
- É baseado 100% em Common Lisp
- Destaca como característica uma configuração batteries included, com ferramentas básicas incluídas
Exemplo de execução de script
- O código de exemplo define o executável
ciel no shebang
#!/usr/bin/env ciel
(print
(json:read-json
(http:get "https://fakestoreapi.com/products?limit=5")))
- Ele envia uma requisição HTTP com
http:get, lê o JSON da resposta com json:read-json e então imprime com print
- O comando de execução é o seguinte
$ ./myscript.lisp
Acesso à documentação e ao repositório
- O link do projeto está em GitHub
- O restante da documentação web exige JavaScript e, se você não puder usar JavaScript, há uma orientação para consultar o repositório no GitHub
1 comentários
Opiniões no Hacker News
É realmente importante que componentes bem documentados e padronizados venham empacotados de modo que possam ser usados imediatamente como se fossem parte da linguagem principal, e ainda com um nome bacana
Gostei, e parece que também poderia se tornar um novo alvo padrão. Agora só falta um bom mascote ou logotipo
Gostei da abordagem. Eu esperava “mais um Lisp”, o que até seria legal, mas provavelmente não algo que eu quisesse usar de imediato
Expandir e melhorar o que já existe pode ser mais difícil e menos divertido do que começar do zero, mas é muito mais valioso. Já uso Common Lisp, e isto parece reduzir um pouco aquelas esquisitices características, especialmente para iniciantes ou projetos pequenos
Sempre que surge a conversa sobre um Lisp rápido e conveniente, fico com vontade de mencionar o Joker(https://github.com/candid82/joker)
É uma sintaxe de Clojure implementada em Go; não tenho ligação com o projeto, mas acho excelente. Escrevendo o exemplo do CIEL em Joker, fica
(prn {:a 1 :b 2 :c 3}), e o Gist para baixar, instalar e executar está em https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...A execução do script inteiro levou 2,1 segundos, e a execução do exemplo em si levou 0,007 segundo
É bom ver que a abordagem adotada pelo Babashka(https://babashka.org/) agora também apareceu no mundo do Common Lisp
No Safari aparece o mesmo alerta de Javascript. Não ativei nenhuma extensão
Conferindo no Chrome, fora isso, parece exatamente no formato que eu gostaria de usar. A biblioteca-padrão de CL já parece um pouco sobrecarregada, mas, se a ideia é ser “batteries included”, faltavam coisas como Alexandria e Bordeaux, então gostei dessa escolha. Ela dá uma sensação de “boas práticas” ou de padronização a um ecossistema CL um tanto fragmentado
Excelente. Pessoalmente, uso uma imagem com Alexandria, Serapeum, Dexador, Bordeaux Threads e ferramentas relacionadas a JSON, e pode ser conveniente se outras pessoas tiverem algo para usar com um alvo semelhante
Parece ter mais chance de sucesso do que as propostas CDR, que geraram discussão demais, ou do que o CL21 antes delas. Também fico curioso se há muitos reader macros ativados por padrão
Isso porque não queremos mexer no readtable por padrão. Para saber como ativar o passthrough de shell no REPL do editor, veja abaixo
1: https://github.com/Neronus/Clesh
Se surgirem wrappers para compilar o núcleo de ncurses e SDL, talvez algum dia o lem rode diretamente sobre o CIEL e tenhamos um ambiente Lisp de verdade
https://news.ycombinator.com/item?id=41357409
Parece diferente de Ciel(https://pldb.io/concepts/ciel.html), outro Lisp criado por Ron Garret em 2010. Ele também é cientista de foguetes(https://flownet.com/ron/)
Dá para compilar facilmente para binário? Parece que basta usar o modo padrão de CL
Ter passthrough de shell como
!lsnoCIEL custom REPLé um recurso interessanteO autor ainda não o considera “pronto” nem “bom o suficiente”, mas ele já avançou bastante. Também há o shell POSIX https://github.com/bradleyjensen/shcl. Como sempre, há uma lista maior em https://github.com/CodyReichert/awesome-cl#shells-shells-int...
Gostaria de adicionar o comando
ciel buildFico curioso se Python é que é o caso estranho em implementações de REPL. Só estou familiarizado com REPLs de Python e e-lisp
Ctrl+Z?Parece SBCL com bibliotecas adicionadas. O autor, vindarel, está no HN
Ao iniciar um projeto novo, quando preciso interagir com o mundo externo, ou quando quero escrever algo pequeno e colocá-lo em um servidor sem a complexidade do Python, ele me poupa bastante tempo. Claro que é difícil substituir o Django, mas também comecei um dashboard automático de banco de dados para operações CRUD; ainda não é público, mas está em andamento
Venho integrando CL gradualmente ao trabalho com clientes, e o CIEL é mais um meio para esse fim. É para usar CL de verdade. Meus projetos não precisam necessariamente dos superpoderes de CL, mas quero esse poder no desenvolvimento, na implantação e no monitoramento
Corrigi alguns problemas hoje e lancei a v0.2: https://github.com/ciel-lang/CIEL/releases/tag/v02 O ponto principal é que instalar o CIEL deve ficar muito mais fácil, especialmente no Mac. Agora há muito menos dependências de sistema
Se a instalação ainda for difícil em alguma plataforma específica, eu gostaria que você enviasse os detalhes em uma issue. Em resumo, espero que o CIEL torne sua jornada com CL mais fácil e tranquila. Você nem imagina quanto tempo levei para descobrir certas coisas. Agora está tudo aqui, pronto e empacotado :-]