1 pontos por GN⁺ 2024-08-31 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2024-08-31
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

    • Pelo nome, acho que deveria ser uma foquinha
    • Não sei onde fica a documentação. Sinceramente, não parece haver muita coisa aqui, e eu chamaria mais de README do que de documentação
  • 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

    • No REPL de terminal, só um fica ativado; quando o CIEL é usado como uma biblioteca Lisp comum, nenhum fica ativado
      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
    • Dando uma olhada rápida no código, parece que só o clesh[1] vem ativado por padrão para sair do REPL para o shell
      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 !ls no CIEL custom REPL é um recurso interessante

    • É bem prático. Se você quiser um shell Lisp avançado no terminal, misturando código de shell e código Lisp, veja o lish: https://github.com/nibbula/lish/
      O 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...
    • Por enquanto, ele é compilado do modo padrão, usando o CIEL como biblioteca
      Gostaria de adicionar o comando ciel build
    • Desculpe se eu estiver errado, mas achei que isso fosse um recurso bastante padrão. O kernel do IPython usa exatamente o mesmo formato, e, se você precisar de um shell completo, também pode usar xonsh
      Fico curioso se Python é que é o caso estranho em implementações de REPL. Só estou familiarizado com REPLs de Python e e-lisp
    • O que falta no Ctrl+Z?
  • Parece SBCL com bibliotecas adicionadas. O autor, vindarel, está no HN

    • Olá o/ Espero que os objetivos do CIEL tenham ficado bem explicados. Eu o uso todos os dias, uso a imagem de core dentro do editor e também distribuo produtos com ele
      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 :-]