9 pontos por GN⁺ 2025-04-15 | 2 comentários | Compartilhar no WhatsApp
  • Fennel é uma linguagem de programação executada na runtime do Lua
  • Lua é uma linguagem de programação simples, mas poderosa, que pode ser facilmente integrada a outros programas para oferecer aos usuários a possibilidade de reprogramação
  • Fennel complementa as limitações do Lua, oferecendo uma alternativa mais clara e com menos erros
  • Fennel usa sintaxe da família Lisp para reduzir a complexidade sintática e melhorar a legibilidade do código
  • Fennel oferece recursos aprimorados em relação ao Lua em áreas como reatribuição de variáveis, notação de tabelas e verificação de argumentos de funções

O que é Fennel?

  • Fennel é uma linguagem de programação executada na runtime do Lua
  • Lua é uma linguagem simples, mas poderosa, que pode ser facilmente integrada a outros programas para permitir que os usuários reprogramem o programa
  • Fennel complementa as limitações do Lua, oferecendo uma alternativa mais clara e com menos erros

Vantagens do Lua

  • Lua é uma linguagem pequena e rápida, composta por cerca de 19.000 linhas de código em C e compilada em 278kb
  • Mantém a simplicidade conceitual e, ao mesmo tempo, oferece recursos poderosos
  • Pode ser facilmente integrada a outros programas, permitindo que os usuários reprogramem o programa

Principais características do Fennel

  • Fennel usa sintaxe da família Lisp para reduzir a complexidade sintática e melhorar a legibilidade do código
  • Tudo é tratado como expressão, sem ambiguidades quanto à precedência de operadores ou retornos antecipados
  • Variáveis: dificulta o uso de variáveis globais para reduzir erros e aumenta a clareza ao usar var na reatribuição de variáveis

Tabelas e loops

  • Fennel aprimora a notação de tabelas, distinguindo entre arrays e tabelas de chave/valor
  • Em loops, usa for e each para oferecer uma sintaxe clara

Funções e outros recursos

  • Fennel oferece suporte à verificação de argumentos de funções, gerando erro quando faltam argumentos
  • Oferece suporte a desestruturação e pattern matching, permitindo escrever condicionais de forma mais declarativa
  • Inclui um sistema de macros, facilitando a extensão com novas formas sintáticas

2 comentários

 
GN⁺ 2025-04-15
Comentários do Hacker News
  • É bom ver novas linguagens mirando o runtime do Lua

    • Recentemente tornei um servidor SSE programável em Lua
    • Recomendo muito Lua e os bindings Rust mlua-rs
  • Fennel é bom

    • Converti minha configuração do neovim para Fennel e não me arrependi
  • Além de Forth, Lisp e Lua, Tcl também merece ser mencionado como uma linguagem pequena para embedding

    • Ficou mais complexo a partir da versão v8, mas as primeiras versões eram bem simples
    • Li o livro do Ousterhout, fiquei impressionado e implementei por conta própria
  • Não entendo o apelo das linguagens LISPy

    • O parser é simples e elegante, mas acho que os desenvolvedores devem priorizar a conveniência do usuário
    • Escrever código é trabalhoso e há símbolos demais sem necessidade
    • Fazer parsing de uma sintaxe parecida com C não é tão difícil assim
  • A abordagem do Fennel de compilar para Lua mantendo recursos de metaprogramação é elegante

    • A sintaxe lembra Clojure, mas sem o overhead da JVM
    • É uma combinação adequada para sistemas embarcados ou desenvolvimento de jogos
  • Fennel é bem legal

    • Gostaria que permitisse suporte gradual a tipos ou anotações de tipo para ferramentas estáticas
    • Tipagem dinâmica é uma escolha válida, mas depois que há cada vez mais linguagens com suporte gradual a tipos, fica difícil voltar atrás
  • Informações para quem procura outras linguagens construídas sobre Lua

  • Quem reclama de parênteses provavelmente não programou Lisp o suficiente

    • Depois que você supera os parênteses, a homogeneidade da linguagem brilha e você entende por que as pessoas gostam de Lisp
  • É bom para desenvolvimento de jogos casual e divertido

    • O TIC-80 oferece suporte direto, e é fácil migrar de Fennel para PICO-8
 
nemorize 2025-04-15

Parece que o link do MoonScript está apontando para o lugar errado~
https://moonscript.org/